数组排序法(冒泡、直选、插入、反转)

博主在学习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));}
}

Java学习之路——数组排序法(冒泡、直选、插入、反转)相关推荐

  1. java学习之路之javaSE基础1

    <h2>java学习之路之javaSE基础1</h2> <div> ###01.01_计算机基础知识(计算机概述)(了解) * A:什么是计算机?计算机在生活中的应 ...

  2. 个人开发经历--我的java学习之路(学校篇)

    个人开发经历--我的java学习之路(学校篇) 个人介绍: 姓名: 不在这里说明 联系信息: 个人历程 jdbc阶段 sql生成器 一代代码生成器 servlet阶段 servlet项目中,sql生成 ...

  3. 萌新的java学习之路——第一周

    萌新的java学习之路--第一周 第一周的学习 这是我学习Java的第一周,写这个博客更多的时为了总结自己这一周的学习情况,如果有人看到我写的博客,有什么问题的话,可以问我.虽然我也是一个小白,但我会 ...

  4. JAVA学习之路--基础篇三

    目录 关于Java中从键盘输入的语句 nextxxx().next().nextLine()的区别 语句 if和if else语句 Switch语句 for语句 while和do..while bre ...

  5. java学习之路目录(已完结)

    java学习之路目录(持续更新中-) 第一阶段 javaSE(完结) 序号 标题 内容 001 java初识 java语言特点.体系结构.运行机制 002 java SE基础语法 注释.关键字.变量. ...

  6. java学习之路2--简单工厂模式实现饮料自动贩卖机

    java学习之路2 用简单工厂模式实现饮料自动贩卖机 功能简介 具体实现 1.简单工厂模式 2.代码 总结 用简单工厂模式实现饮料自动贩卖机) 功能简介 接收用户输入的信息,选择购买的饮料. 可供选择 ...

  7. Java学习之路——接口

    Java学习之路--接口 概述 总所周知,我们是父母的孩子.我们的身上既继承了爸爸的基因也继承了妈妈的基因.这就是多继承. 然而在 Java 程序中,是不支持多继承的.Java 仅仅支持单继承.但是接 ...

  8. 我的Java学习之路2009-11-17

    -------------------------------2009年3月19日开始----------------------------- 下载JDK Myeclipse Netbeans JB ...

  9. JAVA学习之路:不走弯路,就是捷径(一)

      0.引言 在ChinaITLAB导师制辅导中,笔者发现问得最多的问题莫过于"如何学习编程?JAVA该如何学习?".类似的问题回答多了,难免会感觉厌烦,就萌生了写下本文的想法.到 ...

最新文章

  1. 【Qt】报错error: undefined reference to `vtable for的解决方法
  2. 一个监控磁盘的nagios脚本
  3. 字符串匹配的sunday算法
  4. ToString()、Convert.ToString()、(string)、as string 的区别
  5. BZOJ.4516.[SDOI2016]生成魔咒(后缀自动机 map)
  6. python reduce函数_Python reduce()函数的用法小结
  7. python语句join_详解Python中的join()函数的用法
  8. 第十届数据技术嘉年华活动彩蛋!
  9. phpStudy配置站点 解决You don't have permission to access / on this server
  10. 敏捷外包工程系列之一:序言(敏捷外包工程,敏捷开发,CMMI,软件外包,政府项目,银行项目,电信项目)...
  11. bzoj 2553 [BeiJing2011]禁忌——AC自动机+概率DP+矩阵
  12. 前端之JQuery:JQuery属性操作
  13. 为什么快捷指令无法将媒体转换为文本_小红书去水印快捷指令重磅更新,连视频封面图都可以下载了...
  14. 从NCBI中查看已发现的基因可变剪接
  15. 计算机休眠无法共享,WIN10从睡眠中唤醒后共享打印机不可用
  16. videobox,一个错误的名字
  17. INT8量化原理理解
  18. 小爱音箱 电脑 麦克风_颜值音质皆出色,还有丰富功能,小米小爱音箱体验
  19. fatal: The remote end hung up unexpectedly解决方案
  20. oracle怎么生成osf,Oracle技术之Linux 建立软raid

热门文章

  1. 万能的Map集合传递参数和模糊查询
  2. 《哪吒之魔童降生》手稿首曝光!上映5天破11亿,Ta凭什么能火?
  3. P3387 【模板】缩点 (Tarjan + 拓扑 + dp)
  4. DNS流量分析领域调研
  5. 如何让CSDN博客的代码高亮显示
  6. 海藻酸钠-聚乙二醇-四嗪 TZ-PEG-alginate 四嗪修饰海藻酸钠 海藻酸钠-PEG-四嗪
  7. 解决keil软件*** Error: Project ‘first‘ requires ‘C51‘ Toolchain which is not installed.
  8. 【ReadMe】博客导航 -- 针对本人原创博客内容进行分类(优先读)
  9. 推荐RSS阅读器NewsGator
  10. 报错:java.net.SocketTimeoutException: 30,000 milliseconds timeout on connection