java版資料結構與演算法—插入排序
阿新 • • 發佈:2018-11-29
/**
* 插入排序:時間複雜度O(n^2),但比氣泡排序,選擇排序要好
* 把下標為1的先取出來,當做臨時變數,下標為0的元素相當於排好序的
* 然後把下標為1的元素與下標為0的元素比較(升序),如果臨時變數比下標為0
* 的元素小,則下標為0的元素向後移動一個下標,臨時變數插到下標為0的位置中,
* 在下標為2的作為臨時變數。。。以此類推
*/
class ArrayInsert {
public static void insertSort(int arr[]){
int i,j,temp;
for(i=1;i< arr.length; i++){ //從下標為1的取
temp = arr[i]; //當做臨時變數
j = i-1; //有序陣列的最後一個元素的下標(開始時候是0)
while(j >= 0 && arr[j] > temp){ //臨時變數比下標為0的小
arr[j+1] = arr[j]; //開始向後移動
j --; //未排序的長度減1
}
arr[j+1] = temp; //臨時資料開始插入到指定位置
}
}
public static void main(String[] args){
int arr[] = {5,6,2,3,4,1,9,5,7,8,22,10};
insertSort(arr);
for(int i = 0; i<arr.length;i++){
System.out.print(arr[i] + " ");
}
}
}