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

插入排序算法是對少量數據進行排序的有效算法,打撲克是排序算法的在生活中的典型應用,每次摸一張牌時,我們就按順序把它放在合適的位置,最後從左到右就是從小到大的順序(也可能從大到小)。接下來就用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裏了。每次右移都爲下一次右移或插入留出了位置,這就是插入排序的關鍵點所在。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章