Java排序 插入排序

2021-07-16 17:14:58 字數 955 閱讀 5422

內部排序(internal sorting):排序工作在主存中完成。

外部排序(external sorting):在磁碟或磁帶中完成。

插入排序o(n^2),希爾排序(sellsort)o(n^2)。

可以讓排序物件實現comparable介面,通過重寫它的compareto方法來實現比較。在這些條件下的排序叫做基於比較的排序(comparison-based sorting)。在預設的排序沒有或不可接受的情況下,我們很容易用comparator來重寫排序演算法。

插入排序由n-1趟排序組成。對於p=1到n-1趟,插入排序保證從位置0到位置p上的元素為已排序狀態。插入排序利用了這樣的事實:已知位置0到位置p-1上的元素已經處於排過序的狀態。下面顯示了乙個陣列樣例在每一趟插入排序後的情況。

每趟後的插入順序:

上圖表達了一般策略。在第p趟,我們將位置p上的元素向左移動,直到它在前p+1個元素中的正確位置被找到的地方。下面程式實現了插入排序,位置p上的元素儲存於tmp,而(在位置p之前)所有更大的元素都被向右移動乙個位置。然後tmp被置於正確的位置上。

public static >

void insertionsort(anytype a)

a[j] = temp;

} }

由於巢狀迴圈的每乙個都花費n次迭代,因此插入排序為o(n^2),而且這個界是精確的,因為以反序的輸入可以達到該界。精確計算得出,上面程式內迴圈中元素的比較次數對於p的每個值最多是p+1次。對所有的p求和得到總數為:

2+3+4+...+n=o(n^2)

另一方面,如果輸入資料已預先排序,那麼執行時間為o(n),因為內層for迴圈的檢測總是判斷不成立而終止。事實上,如果輸入幾乎被排序,那麼插入排序將執行的很快。插入排序的平均情形也是o(n^2)。

排序 插入排序 java

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

Java 排序 插入排序

插入排序就是依次摘出陣列中的數,向前插入在比他更小或相等的數後,後面的數依次向後移一位,直到陣列每乙個數完成摘出插入。有點像悲觀理撲克牌的方法 對於長度n的陣列,需要最多n 1次遍歷,每一次從順序佇列後開始遍歷,直到順序佇列長度為n。插入排序邏輯很簡單,但是 邏輯比冒泡,選擇稍複雜。外迴圈從第二個數...

插入排序(Java)

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