插入法排序及原理
来源:互联网 发布:魔方虚拟光驱软件下载 编辑:程序博客网 时间:2024/05/21 11:06
入排序的基本思想是,经过i-1遍处理后,L[1..i-1]己排好序。第i遍处理仅将L[i]插入L[1..i-1]的适当位置,使得L[1..i]又是排好序的序列。要达到这个目的,我们可以用顺序比较的方法。首先比较L[i]和L[i-1],如果L[i-1]≤ L[i]騆[1..i]已排好序,第i遍处理就结束了;否则交换L[i]与L[i-1]的位置,继续比较L[i-1]和L[i-2],直到找到某一个位置j(1≤j≤i-1),使得L[j] ≤L[j+1]时为止。
简言之,插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。插入排序方法分直接插入排序和折半插入排序两种,这里只介绍直接插入排序,折半插入排序留到“查找”内容中进行。
图1演示了对4个元素进行直接插入排序的过程,共需要(a),(b),(c)三次插入。
简言之,插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。插入排序方法分直接插入排序和折半插入排序两种,这里只介绍直接插入排序,折半插入排序留到“查找”内容中进行。
图1演示了对4个元素进行直接插入排序的过程,共需要(a),(b),(c)三次插入。
代码:
nt a[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51};
int temp=0;
for(int i=1;i<a.length;i++){
int j=i-1;
temp=a[i];
for(;j>=0&&temp<a[j];j--){
a[j+1]=a[j]; //将大于temp的值整体后移一个单位
}
a[j+1]=temp;
}
for(int i=0;i<a.length;i++)
System.out.println(a[i]);
}
int temp=0;
for(int i=1;i<a.length;i++){
int j=i-1;
temp=a[i];
for(;j>=0&&temp<a[j];j--){
a[j+1]=a[j]; //将大于temp的值整体后移一个单位
}
a[j+1]=temp;
}
for(int i=0;i<a.length;i++)
System.out.println(a[i]);
}
- 插入法排序及原理
- 插入排序(直接插入排序法)原理及代码
- 插入排序原理分析及Java实现
- 插入-排序原理及Java 实现
- 冒泡排序、插入排序、选择排序的原理及比较
- 【排序算法】插入排序原理及Java实现
- 直接插入排序算法原理及JAVA实现
- 二分法插入排序算法原理及JAVA实现
- 直接插入排序算法原理及JAVA实现
- 插入排序:2路插入排序原理分析及源码演示
- 简单排序Java实现(一):冒泡排序,选择排序,插入排序(原理及实现)
- 插入排序的原理
- 插入排序的原理
- 插入排序及优化
- 插入排序及优化
- 插入排序及插入排序改进
- [java]插入排序及折半插入排序
- 插入排序及归并排序
- debian or ubuntu下 anjuta配置
- base lib 1 ----Timestamp
- iOS开发 浅谈开发中的重用
- DW运行很慢,WINDOWS7上面Dreamweaver很慢的解决非方法
- __call__ 函数
- 插入法排序及原理
- net网站提高性能的方法
- CoreMotion框架-iOS设备的核心运动
- 关于java类的封装性的一点看法
- js输出字符串
- Content Provider
- HDU - 1104 Remainder 搜索
- Given final block not properly padded
- Tesseract-OCR 字符识别---样本训练