Java 排序 插入排序

2021-09-02 20:23:58 字數 898 閱讀 5450

插入排序就是依次摘出陣列中的數,向前插入在比他更小或相等的數後,後面的數依次向後移一位,直到陣列每乙個數完成摘出插入。(有點像悲觀理撲克牌的方法)。

對於長度n的陣列,需要最多n-1次遍歷,每一次從順序佇列後開始遍歷,直到順序佇列長度為n。

插入排序邏輯很簡單,但是**邏輯比冒泡,選擇稍複雜。

外迴圈從第二個數開始,依次向陣列前插入。

內迴圈第i個數需要插入,認定i之前的數都是順序的,那麼就逆序遍歷之前的序列

這裡有個邏輯上兩種思路

1)直接找到更小或相等的數,這個數之後的數依次後移一位,留出空位讓第i個數插入。

2)向前找到更大的數,每次找到的數後移一位,直到找不到更大的數,記下最後後移的位置將第i個數插入。

這裡選擇2)的方式,因為1)的**邏輯需要2個迴圈,第乙個迴圈找數,第二個迴圈後移,很麻煩。

public

static

boolean

insertsort

(int

arr)

else

} arr[j+1]

= insertion;

}return

true

;}

int arr = ;

insertsort(arr);

system.out.println(arrays.tostring(arr));

[1, 1, 2, 3, 4, 7, 9, 9, 10, 17, 23, 66, 72, 84, 85, 100]
結論:和冒泡一樣,插入排序可以做個小優化,不從第2個數開始逆序插入,而是將陣列先遍歷一次,找到第乙個不符合順序的數,記下下標,break。然後從這個數開始插入排序,能稍微快些。

Java排序 插入排序

內部排序 internal sorting 排序工作在主存中完成。外部排序 external sorting 在磁碟或磁帶中完成。插入排序o n 2 希爾排序 sellsort o n 2 可以讓排序物件實現comparable介面,通過重寫它的compareto方法來實現比較。在這些條件下的排序叫...

排序 插入排序 java

不知道為什麼,標題為 charu排序 被csdn給刪除了。插入排序 思想模擬打撲克摸牌的時候,摸一張插入手中的牌排順序 public static void main string args list result newarraylist result.add list.get 0 size re...

插入排序(Java)

演算法思想 每趟將乙個待排序的關鍵字,按照其關鍵字值的大小插入到已經排好的部分序列的適當位置上,直到插入完成。演算法 static void insertion sort int unsorted unsorted j temp public static void main string arg ...