插入排序演算法

2021-07-25 01:42:01 字數 593 閱讀 1231

好比是在整理一副零散的撲克牌,放在右邊,我們先拿出一張牌來放在左邊,接著從右邊拿出一張插入到左邊的佇列中,保證左邊有序,接著再從右邊拿出一張,再插入到左邊的合適位置,最終右邊的牌全部插入到左邊了,排序也就完成了。

private

void

sort0(comparable arr) }}

}

優化演算法

注釋1處,一旦不滿足if條件,說明已經移動完成了,因為陣列的左半部分一直是有序的。就不需要再去判斷前面已經排好序的arr[j],和arr[j-1]的大小了。可以寫成這樣:
private

void

sort0(comparable arr) else}}

}

這種寫法略顯囉嗦,可以將if判斷寫入for迴圈中的條件判斷中,滿足條件則執行下一次,不滿足則跳出迴圈,即break。

private

void

sort0(comparable arr)

}

插入排序對於有序陣列來說,大量減少了元素移動的次數,更加高效。

插入排序演算法

插入排序演算法 思想 把排序過程看作是序列單個有序擴充套件為整體有序的過程,即首先取序列第二個元素與第乙個元素比較,將其插入合適位置,再將第三個元素與前兩個元素比較,將其插入合適位置,如此進行,直到最後取第n個元素與前n 1個元素進行比較並將其插入合適位置。演算法 建立日期 2004 12 14 插...

演算法 插入排序

include include 插入排序 n 2為的效率。具體思想 將陣列分為兩部分,一部分是有序的,一部分為無序的 然後從無序中選取乙個數插入在有序的數中的恰當的位置,以此迭代,直到無序的數全部遍厲完畢 void insert sort int a,int n a j tmp break retu...

插入排序演算法

下面這段話摘自 一般來說,插入排序都採用in place在陣列上實現。具體演算法描述如下 從第乙個元素開始,該元素可以認為已經被排序 取出下乙個元素,在已經排序的元素序列中從後向前掃瞄 如果該元素 已排序 大於新元素,將該元素移到下一位置 重複步驟3,直到找到已排序的元素小於或者等於新元素的位置 將...