JAVA之插入排序
来源:互联网 发布:java 方法区 内存溢出 编辑:程序博客网 时间:2024/06/05 07:50
插入排序基本思想:将一个未排序的数列,按其大小插入前面已经排好的序列适当位置上,直到全部插入完为止。
抽象的思想往往真的是很让人头痛呀,其实很简单。平时大家打扑克牌的时候,采用的就是插入排序。仔细想想看,当我们摸上第一张扑克牌时,默认我们手里的排就是有序的,因为就只有一张。当我们摸上第二张扑克牌时,会根据第二张的大小,跟第一张进行比较,决定第二张扑克牌是该放在第一张的左边还是右边。重复这样的过程,直到桌上的扑克牌摸完。这时我们会发现自己手里的排是有序的,这种有序的排列就是插入排序。
用一个简单的Demo,展示一下Java实现插入排序的过程:
public static void main(String[] args) { int a [] = {4,20,7,3,1}; int c [] = insertSort(a); for (int i = 0; i < c.length; i++) { System.out.print(c[i]+" "); } } public static int [] insertSort(int a[]){ int insertNode ; int j; for(int i=1;i<a.length;i++){ insertNode = a[i]; j = i-1; while(j>=0 && a[j]>insertNode){ a[j+1] = a[j]; j--; } a[j+1] = insertNode; /*-------------------此段代码只是为了研究插入排序运行流程而添加-----------------------*/ for (int k = 0; k < a.length; k++) { System.out.print(a[k]+" "); } System.out.println(); /*-------------------此段代码只是为了研究插入排序运行流程而添加-----------------------*/ } return a; }
流程解析:
未排序数列:4,20,7,3,1
---------------------------------------------------------------------------------------------------------------------------------
第一趟排序:
排序前数据:4 20 7 3 1
默认一个数据4是有序的,4和20进行比较,发现4和20是有序数列,不用变。
排序结果:4 20 7 3 1
---------------------------------------------------------------------------------------------------------------------------------
第二趟排序:
排序前数据:4 20 7 3 1
首先20和7比较,交换位置。其次4和7比较,有序不变。
排序结果:4 7 20 3 1
---------------------------------------------------------------------------------------------------------------------------------
第三趟排序:
排序前数据:4 7 20 3 1
首先3和20比较,交换位置。其次3和7比较,交换位置。最后4和3比较,交换位置。
排序结果:3 4 7 20 1
---------------------------------------------------------------------------------------------------------------------------------
第四趟排序:
排序前数据:3 4 7 20 1
首先20和1比较,交换位置。7和1比较,交换位置。4和1比较,交换位置。最后3和1比较,交换位置。
排序结果:1 3 4 7 20
---------------------------------------------------------------------------------------------------------------------------------
总结:小弟总结总结自己所学知识,望路过大神勿喷哈。谢谢!!!
- java之插入排序
- java之插入排序
- JAVA之插入排序
- java之插入排序
- Java排序之插入排序
- Java 排序之 插入排序
- Java排序之插入排序
- java排序之插入排序
- Java排序之插入排序
- Java 排序之 插入排序
- 排序之插入排序(java)
- java 排序之插入排序
- java插入排序之直接插入排序
- java基础之插入排序
- java数据结构之插入排序
- JAVA基础知识之插入排序
- Java-算法之插入排序
- java算法之插入排序
- 搜狗拼音设置
- 文件层次结构
- 分段错误
- [bzoj 1066][SCOI2007]蜥蜴
- JAVA之选择排序
- JAVA之插入排序
- 异常类自定义封装
- MFC中 OnPaint()与OnDraw的区别
- mysql事务简述
- TCP协议中的URG和PSH标志位的区别
- Socket复制文件编程Demo
- TCP的三次握手与四次挥手
- 反射代码块
- SQL Server 中WITH (NOLOCK)浅析(大自然的搬运工)