Java学习之路——数组排序法(冒泡、直选、插入、反转)
来源:互联网 发布:雷克萨斯rx200t 知乎 编辑:程序博客网 时间:2024/06/05 10:05
数组排序法(冒泡、直选、插入、反转)
博主在学习Java语言,学到数组排序,认为这个知识点有必要总结记录一下,遂写下这篇博文。
1.冒泡排序法
思想:循环得出数组中的最大值(相邻两个比较大小,大的往后排)并剔除放在最后,剩下的数进行第二轮循环,得出剩下数的最大值,剔除并放在最后,
……
代码如下:
public class Test16 { //冒泡排序法; public static void main(String[] args){ int[] a={2,1,4,3,6,5,8,7,10,9}; //循环length-1次找最大值; for(int i=1;i<a.length;i++){ //每一轮找最大值需要循环length-i次相邻两数比较; for(int j=0;j<a.length-i;j++){ if(a[j]>a[j+1]){ int temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } System.out.println(Arrays.toString(a)); }}
2.直接选择排序法
思想:循环找出最大值的下标,将最大值和最后一位交换位置,第二轮循环剩下来的数最大值的下标,将最大值和最后一位交换位置……
代码如下:
public class Test17 { //直接选择排序法; public static void main(String[] args){ int[] a={2,1,4,3,6,5,8,7,10,9}; //循环length-1次最大值和最后一位的交换; for(int i=1;i<a.length;i++){ //定义maxIndex变量接收最大值的下标; int maxIndex=0; //因为maxIndex初始值为零,所以从a[1]开始比较,大值的下标赋给maxIndex; for(int j=1;j<=a.length-i;j++){ if(a[j]>a[maxIndex]){ maxIndex=j; } } //交换最大值和最后一位的位置; int temp=a[a.length-i]; a[a.length-i]=a[maxIndex]; a[maxIndex]=temp; } System.out.println(Arrays.toString(a)); }}
3.插入排序法
思想:和摸纸牌的原理一样,摸第一张牌不用管,直接放手里,摸第二张牌需要和第一张比大小,小在前大在后;摸第三张牌先和最后一张比,小在前大在后,再和第一张比,小在前大在后……第一张不用管,需要插length-1张牌,每次要插的牌需要比到a[0]结束循环;
代码如下:
public class Test18 { //插入排序法; public static void main(String[] args){ int[] a={2,1,4,3,6,5,8,7,10,9}; //需要插入length-1个数; for(int i=1;i<a.length;i++){ //定义inserNote为要插入的数; int inserNote=a[i]; //定义j=i-1,先让要插入的数和前一位比较; int j=i-1; //一直比到a[0],要插入的数小于a[j],a[j]就向后推一位; while(j>=0&&inserNote<a[j]){ a[j+1]=a[j]; j--; } /*a[j]的值就空了,需要把要插入的数inserNote赋给a[j] 但由于上面循环最后一步j--,所以要+1*/ a[j+1]=inserNote; } System.out.println(Arrays.toString(a)); }}
4.反转排序法
思想:a[0]和a[a.length-1]交换,a[1]和a[a.length-2]交换……循环交换length/2次即可。
代码如下:
public class Test19 { //反转排序法; public static void main(String[] args){ int[] a={2,1,4,3,6,5,8,7,10,9}; for(int i=0;i<a.length/2;i++){ int temp=a[a.length-1-i]; a[a.length-1-i]=a[i]; a[i]=temp; } System.out.println(Arrays.toString(a)); }}
阅读全文
0 0
- Java学习之路——数组排序法(冒泡、直选、插入、反转)
- Java-数组排序(选择,冒泡,插入)
- Java — 冒泡、选择、插入排序法
- C++数据结构 排序 二分 插入 冒泡 基数 归并 直选 快排 希尔 堆排序
- Java数组排序(插入,选择,冒泡)+显示排序时间
- 数组排序算法(冒泡排序、倒排序、反转排序)
- Java数组排序总结(冒泡,选择,插入,希尔)
- Java数组排序总结(冒泡,选择,插入,希尔)
- Java排序算法(冒泡排序、选择排序、插入排序、反数组排序、快速排序)例子
- Java数组排序(冒泡,选择,插入,希尔)
- Java数组排序——冒泡排序
- Java数组——反转排序
- [Java]数组排序-选择排序 冒泡排序 插入排序
- java数组的排序,选择排序,冒泡排序,插入排序
- Java数据结构与算法之数组排序——冒泡
- 经典的数据结构——数组反转、链表反转、冒泡排序
- Java 数组之冒泡排序
- Java-数组的三大排序方法(冒泡排序,选择排序,插入排序)
- linux中查看nginx、apache、php、mysql配置文件路径
- 在64-bit 驱动中支持32-bit I/O 操作
- 命令模式
- 证券交易中各类词汇的解释
- 初识SDR
- Java学习之路——数组排序法(冒泡、直选、插入、反转)
- 利用reduce端的GroupingComparator来实现将一组bean看成相同的key
- codevs 1961 躲避大龙 bfs
- JADE学习笔记2 :Agent的创建和运行
- 双向链表基本操作
- servlet
- vijos 无向图最短路径 思维
- BZOJ 1485 [HNOI2009]有趣的数列
- Mongo查询操作