1. 程式人生 > >java版資料結構與演算法—插入排序

java版資料結構與演算法—插入排序

/**
 * 插入排序:時間複雜度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] + " "); } } }

在這裡插入圖片描述