直接插入排序法的思想是,把待排序的元素分成两部分,一部分是没排好序的元素,另一部分是排好序的元素。把没排好序的元素,逐一的插入已排好序的部分。
下面是使用直接插入排序法实现升序排序的步骤:
1.从第一个元素开始,可以认为该元素已经被排序,
2.取出下一个元素,在已排序的元素序列中从后向前扫描,
3 若已排序元素大于新元素,则将该元素移到下一位,
4 重复上一步骤,直到找到已排序元素小于或等于新元素位置,
5 将新元素插入下一位置,
6 重复2的步骤。
例
使用直接插入法,对一组数据 23,45,16,7,42按照由小到大顺序排列并输出结果。
排序过程如图
初始关键字 【23】 45 16 7 42
第一步 【23 45】 16 7 42
第二步 【16 23 45】 7 42
第三步 【7 16 23 45】 42
第四步 【7 16 23 42 45】
代码如下
// 待排序数组
int [ ] data={23,45,16,7,42};
for(int i=1, i<data.length,i++){
int currentData=data[i];
int temp=i;
while(temp>0&&data[temp-1]>currentData){
data[temp]=data[temp-1];
// 循环条件
temp---;
}
// temp已经自减一个了
data[temp]=currentData;
}
for(int x: data){
System.out.println(x);
}