八大排序算法之插入排序算法

来源:互联网 发布:it学校 编辑:程序博客网 时间:2024/05/18 20:11

插入排序算法是对少量数据进行排序的有效算法,打扑克是排序算法的在生活中的典型应用,每次摸一张牌时,我们就按顺序把它放在合适的位置,最后从左到右就是从小到大的顺序(也可能从大到小)。接下来就用java代码实现:import java.util.Arrays;


public class Insorted {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[]a = {2,3,6,1,7};
Insorted in = new Insorted();
System.out.println(Arrays.toString(in.insorted(a)));
}
public int[] insorted(int []array){
int i;
int j; 
int key;
if(array == null || array.length == 0){
return null;
}
for(i = 1; i < array.length;i++){
j = i - 1;
key = array[i];
while(j >=0 && array[j] > key){
array[j+1] = array[j];
j--;
}
array[j+1] = key; //a[j]第一次进行右移时覆盖了a[j+1]值,是否造成了数据丢失?不会,a[j]的值存到key里
}
return array;
}
}

  问题1:a[i]第一次进行右移时覆盖了a[i+1]值,是否造成了数据丢失?

答:不会造成数据丢失,应为第一次右移前的i-1=j,此时a[i]的值存在了key里了。每次右移都为下一次右移或插入留出了位置,这就是插入排序的关键点所在。

原创粉丝点击