java實現插入排序

package ogri1;


import java.util.Arrays;


public class InsertSort {


public static void main(String[] args) {
int arr[]={4,3,1,4,5,6,7,8,2,9};
sort(arr);
System.out.println(Arrays.toString(arr));

}
/**
* 插入排序 從小到大排序

* T(n)= n^2
* @param arr
*/
public static void sort(int[] arr){
int key;
for(int i=1;i<arr.length;i++){   // n
/**
* 保存第i位置的數據,以便找到合適位置時可以插入
*/
key=arr[i];  // n-1
int j=i-1;   //n-1
/**
* 依次與i前面的數比較大小,當比i前面的小時,先把前面的向前移動一位,再與前面的前面比。
*/
while(j>=0 && arr[j]>key){  // 2+3+4+...+n  (n-1)(2+n)/2 =  n(n+1)/2-1
arr[j+1]=arr[j]; // 1+2+3+...+n-1  n(n-1)/2
j--;  // 1+2+3+...+n-1  n(n-1)/2
}
/**
* 前面比較玩的j+1就是key的插入位置
*/
arr[j+1]=key;  //n-1
}
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章