博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用分解的方式学算法002——插入排序
阅读量:6950 次
发布时间:2019-06-27

本文共 1225 字,大约阅读时间需要 4 分钟。

本篇介绍第二种排序算法,插入排序。

插入排序一般举的例子是“整理手牌”,从牌堆中摸一张牌,放在手里,按照顺序整理好,一般是将新摸到的牌和手中已有的牌依次比较,可以从小到大也可以从大到小。然后选择合适的位置“插入”。

先看完整的代码实现,这个代码是从大到小(逆序)的方式进行比较的:

public static void InsertSort0(){		int[] a={5,1,4,8,3,9,0,2,7,6};		//1 4 5 8 		for(int i=1;i
=0&&temp

 我们先分析一下,这个算法的大的流程。先选定一个待排序的元素,然后找到一个合适的位置,把元素插入进去。

核心的就是找到合适的位置。

第一步:在一个已经排好序的数组中,找到一个位置,使得当前要插入的元素放入后,其左边的都不大它,其右边的都不小于它。

这个算法用一个循环就可以搞定:

public int GetCorrectIndex(int[] a){		int temp = a[a.length-1];		int j = a.length-2;		while(j>=0 && temp

 这个是在以当前的数组的最后一个元素为基准,向前进行搜索。改进为“人为指定”,增加一个重载版本:

public static int GetCorrectIndex(int[] a,int endIndex){		int temp = a[endIndex];		int j = endIndex-1;		while(j>=0 && temp

 这个函数,输入参数是数组a以及,这个数组中待排序的元素的索引endIndex,也就是说endIndex之前的元素都是有序的。

返回值是这个元素中合适的位置。这个位置就是带排序的元素应插入的位置。

第二步:选定一个待排序的元素,并将带排序的元素插入到合适位置:

public static void InsertSort(int a[]){		for(int i=1;i

 经过这两部,就完成了插入排序,完整代码如下:

package asen.yang;public class insertSort {	public static void main(String[] args) {		// TODO Auto-generated method stub		//InsertSort0();				int[] a={5,1,4,8,3,9,0,2,7,6};		InsertSort(a);		for(int i=0;i
=0 && temp
=0 && temp
=0&&temp

 

转载于:https://www.cnblogs.com/asenyang/p/8795526.html

你可能感兴趣的文章
存储类(作用域、链接、存储时期)
查看>>
jsonp跨域请求
查看>>
OpenGL根据极坐标参数方程绘制心形线、螺旋线等图形
查看>>
通达OA2008从windows环境移植到linux部署手册
查看>>
CentOS6.5编译安装Nginx1.8.1+MySQL5.5.48+PHP5.2.17+xcache3.2+ZendOptimizer-3.3.9
查看>>
zabbix系列(五)zabbix3.0.4 探索主机Discovery自动发现主机详细图文教程
查看>>
利用jstack命令定位占用cpu高的java线程及具体错误代码信息
查看>>
枚举、模拟、递推
查看>>
PSD模板设计图转化为HTML模板的正确做法
查看>>
【C#】事件
查看>>
CF 672 div2 D
查看>>
字符串类dp的题目总结
查看>>
css 视图结构
查看>>
洛谷P1445 樱花
查看>>
P1186 玛丽卡 删边最短路最大值
查看>>
软件工程期末展示材料——RUC自习助手
查看>>
zabbix监控nginx
查看>>
兼容火狐浏览器的select下拉框样式
查看>>
购物商城Web开发第七天
查看>>
TensorFlow安装解惑
查看>>