排序:

冒泡排序:

冒泡排序原理:比较相邻的元素,如果前一个元素比后一个元素大,就交换两个元素的位置,同理如果从大到小。对每一个相邻元素做同样的工作,从开始第一对元素到结尾的最后一对元素,最终最后位置的元素就是最大值。

分析:所以冒泡排序会进行数组长度-1次排序。每次排序会进行数组长度-1再-当前第几次排序例(arr.length-1-i(i为第几次排序))的比较

代码实现:

for(int i = 0 ; i < arr.length-1 ; i++){//控制几次排序for(int j = 0 ; j < arr.length-1-i ; j++){//控制当前排序进行几次比较if(a[j] > a[j+1]){//这里是进行降序int tem = a[j];//设置一个过度值来保存a[j]//交换a[j] = a[j+1];a[j+1] = tem;}}
}

选择排序:

排序原理:每一次遍历的过程中,都假定第一个索引处的元素是最小值,和其他索引处的值依次进行比较,如果当前索引处的值大于其他某个索引处的值,则假定其他某个索引处的值为最小值。最后可以找到最小值所在的索引。交换第一个索引处和最小值所在的索引处的值.

分析:

1.定义两个数:

定义一个变量记录最小索引所在的索引,默认为于选择排序的第一个元素所在的位置。

定义一个数作为保存用的过渡值。

2.外层循环:控制排序的次数,因为到最后一位的时候就不用排,又因为索引的最大值为arr.length-1,所以要进行arr.length-2次排序。

3.内层循环:因为第一次排序,最大值或者最小值就会排到第一个位置,而第二次循环则是把次大或者次小的数放到最大值或者最小值的后面,所以索引的值就要是前一个排好的值的索引+1的位置,然后此次循环的最小值要与最小值后面的每一个数进行比较,找出比赋的最小值小的数进行缩影交换。

实现:


int tem = 0;
for(int x = 0 ; x <= arr.length-2;x++){//也可以这样写:(x < arr.length-1 )int minIndex = x;//这里就是得到当前最小值的缩影for(int y = x+1 ; y <arr.length ; y++){//最小值与最小值后面的数进行比较if(arr[x] > arr[y]){tem = arr[x];arr[x] = arr[y];arr[y] = tem;}}
}

插入排序:

排序原理:

1.把所有元素分为两组,已经排序的和未排序的。

2.找到未排序的组中的第一个元素,向已经排序的组中进行插入。

3.倒叙遍历已经排序的元素,依次和待插入的元素进行比较,直到找到一个元素小于等于待插入元素,那么就把待插入元素放到这个位置,其他的元素向后移动一位。

实现:

外层循环:控制排序多少次

内层循环:进行倒叙,从已排序组的最后一位的索引处开始,往前比较,如果要插入的数,比最后一位数要大,那么放到最后一位数的前面,再与最后一位数的前一位数进行比较,依次类推

int[] arr = {23, 45, 12, 8, 3, 2, 55, 34, 87, 21};
int tem = 0;
for (int i = 1; i < arr.length; i++) {//外层循环,因为0索引处的值是已排序的,所以不用进行排序for (int j = i; j > 0; j--) {//内层循环,因为进行倒叙,是用i位的值与前面已排序的那一组进行比较if (arr[j - 1] > arr[j]) {tem = arr[j];arr[j] = arr[j-1];arr[j-1] = tem;}else {break;}}
}
for ( int x =0 ; x< arr.length;x++){//遍历System.out.print(arr[x]+"  ");
}

Java SE(排序)相关推荐

  1. [零基础学JAVA]Java SE实战开发-37.MIS信息管理系统实战开发[JDBC](1)

    MIS信息管理系统实战开发之使用MySQL实现保存 开发背景 ID.姓名.年龄为公共信息,而学生有成绩,工人有工资 定义一个抽象类Person(ID.姓名.年龄),学生是其子类,有成绩,工人是其子类有 ...

  2. 【读书笔记】《写给大忙人看的Java SE 8》——Java8新特性总结

    2019独角兽企业重金招聘Python工程师标准>>> 阅读目录 接口中的默认方法和静态方法 函数式接口和Lambda表达式 Stream API 新的日期和时间 API 杂项改进 ...

  3. java se翻译_(翻译)Java SE 8 Lambda 标准库概览(下)

    Java SE 8 Lambda 标准库概览 8,Collectors 在目前的例子中,我们已经使用了collect()方法来收集流中的元素并放入List或Set中了.collec()方法的参数是一个 ...

  4. 面试必会系列 - 1.1 Java SE 基础

    本文已收录至 github,完整图文:https://github.com/HanquanHq/MD-Notes Java SE 基础 面向对象 Java 按值调用还是引用调用? 按值调用指方法接收调 ...

  5. java 中间容器 表格_【JAVA SE基础篇】45.迭代器、Collections工具类以及使用容器存储表格...

    本文将要为您介绍的是[JAVA SE基础篇]45.迭代器.Collections工具类以及使用容器存储表格,具体完成步骤: 1.迭代器 迭代器为我们提供了统一遍历容器(List/Map/Set)的方式 ...

  6. Java Se相关测试题(偏线程、集合)含答案及详解

    Java Se相关测试题(偏线程.集合)(简答.编程)含答案及详解 一.选择.简答题 二.编程题 (编程答案有很多思路,实现方式不同,如果有不同见解可打在评论区或私信) 一.选择.简答题 1.publ ...

  7. 【笔记】JAVA SE

    [笔记]JAVA SE 文章目录 [笔记]JAVA SE 1.快捷键 2.DOS命令 3.JDK,JRE和JVM之间的关系 4.JDK的主要文件夹说明 5.JVM的内存分配 6.Java中的堆和栈的关 ...

  8. java各种排序实现

    排序是程序开发中一种非常常见的操作,对一组任意的数据元素(或记录)经过排序操作后,就可以把他们变成一组按关键字排序的有序队列. 对一个排序算法来说,一般从下面3个方面来衡量算法的优劣: 时间复杂度:它 ...

  9. Java SE 6之GUI:让界面更加绚丽(下)

    在上一篇中我介绍了Java SE 6在GUI上的部分改进.在这篇文章中我接着介绍另外几种新的GUI功能.这些功能是: 1.  带有排序和过滤功能的JTable. 2.  增强的JTabbedPane组 ...

  10. Java复习总结(二)Java SE 面试题

    Java SE基础知识 目录 Java SE 1. 请你谈谈Java中是如何支持正则表达式操作的? 2. 请你简单描述一下正则表达式及其用途. 3. 请你比较一下Java和JavaSciprt? 4. ...

最新文章

  1. 如何创建一个最小的区块链
  2. 算法训练 P0103
  3. 网络字节序与主机字节序的转换[转]
  4. 不可不知的站群外推方法与技巧
  5. java 小球抛物线_关于【愤怒的小鸟】其中的算法(自由落体,抛物线,碰撞,反弹)...
  6. [人工智能]手语识别转文字落地深圳医院,厉害了我的腾讯
  7. Android应用如何反馈Crash报告
  8. 【BZOJ 3652】大新闻 数位dp+期望概率dp
  9. 一个白学家眼里的 WebAssembly
  10. 关于解决“无法定位程序输入点于动态链接库”问题的思路
  11. 2022年全球市场羊毛纱总体规模、主要生产商、主要地区、产品和应用细分研究报告
  12. java.lang.IllegalArgumentException: Last encoded character (before the paddings if any)
  13. linux 系统迁移 固态硬盘,系统迁移
  14. linux给PATH添加变量,给PATH变量添加路径--用Enki学Linux系列(6)
  15. 分组密码体制【密码学笔记】
  16. 在C++里边定义一个宏,最多可以包含几层?
  17. 使用userAgent检测内核、平台、Windows 操作系统、移动设备..
  18. android手机自动打开pdf文件夹,一种告诉您如何在Android手机上打开PDF文件的方法...
  19. 编写一个函数,去除多余的空格
  20. 小程序引入iconfont多色图标

热门文章

  1. 手机如何借用笔记本网络上网
  2. Python求两个圆的交点坐标或三个圆的交点坐标
  3. 记一次npm install 报RequestError connect ETIMEDOUT 20.205.243.166443和RequestError socket hang up
  4. 侯捷C++八部曲笔记(四、C++2.0新特性)
  5. android开发常用的ADB命令
  6. Win2008安装11g报错:orandce11.dll.dbl and orancds11.dll.dbl 文件找不到
  7. 抑郁研究所融资历程分享--以太一堂--直播课
  8. SVM支持向量机-拉格朗日乘子与对偶问题(1)
  9. R语言dplyr数据变换
  10. JSch执行shell命令