排序演算法總結(3) 插入排序

2021-07-13 16:57:56 字數 587 閱讀 2674

插入排序是區域性有序的,陣列中有乙個元素被作為標記元素,標記元素的左側是有序的,右側是無序的,即標記元素是無序部分的第乙個元素。

此時要求被標記元素出列,且和有序部分的第乙個元素進行比較,若標記元素小於有序部分的最大元素,則最大元素右移到標記元素的位置,標記元素和次大元素繼續比較,直到標記元素大於有序部分的某個元素,此時標記元素在此位置入列,即插入。

**如下:

public class insertsort 

a[in]=temp;

} }}

在外層的for迴圈中,out變數從1開始,向右移動。它標記了未排序部分最左端的資料。

內層的while迴圈中,in變數從out變數開始向左移動,直到temp變數小於in所指的陣列元素,或者不能向左移動為止。while迴圈的每一趟都向右移動了乙個已經排序的資料。

效率:對於隨機資料,插入排序需要的執行時間為o(n2)

對於已經有序或基本有序的資料來說,插入排序要好得多。當資料有序的時候,while迴圈的條件總是假的,所以只執行了外層迴圈的n-1次,演算法執行只需要o(n)的時間。

然而對於逆序數列,每次比較和移動都會執行。

排序演算法3 插入排序

插入排序 insertion sort 通過對未排序的元素逐個插入已排序的合適的位置而完成排序工作,其排序流程如下 1.對陣列的前兩個元素進行排序。2.將第三個元素和前兩個已經排好序的元素進行比較,並且插入到合適的位置。3.和第二步同樣的方法對剩下的所有元素進行排序,最後便可得到按照從大到小的順序排...

排序演算法3 插入排序

該演算法維護乙個有序序列,然後把無序序列中的元素,在有序序列中從後往前進行掃瞄,找到位置後插入。從乙個元素開始,該元素可以認為已經被排序好的。在有序序列從後往前掃瞄的過程中,也要將已排序的元素逐個後移,為新插入的元素提供位置 插入排序 public class insertsort for int ...

排序演算法總結 插入排序

插入排序,顧名思義就是將乙個元素插入到適當的位置。其演算法核心是 1.將第乙個元素看做是個單獨的序列。顯然,只有乙個元素的序列肯定是有序序列。2.然後將和第二個元素做比較。如果第二個元素小,那麼就將第二個元素插入到第乙個元素前面,這樣我們就得到了乙個擁有兩個元素的有序序列。3.依次掃瞄剩餘元素,每掃...