插入排序是一種穩定的原址排序演算法,這意味著它不會改變輸入時就已有序的元素之間的順序。
它的基本思想是:選定乙個元素,將它像一張牌從牌堆裡抽出,與它前面的元素一一比較,找到合適的位置,然後插入。由於該選定元素的位置可能將被其它元素所佔據,所以每次比較都應將所有該選定元素之前的元素向選定元素留下的空位移動(以空出乙個位子來插入選定元素)。
上圖以0為選定元素進行了一次「插入」操作。
可以看出,如果待排序陣列是arr,當前與選定元素比較的元素的索引是n,那麼每次比較如果成功,只需要執行arr[n+1]=arr[n]即可實現「元素移動」的效果。
不難寫出**,我們只要對所有元素執行一遍「插入」操作,就能保證每個元素都被「插入」到合適的位置。
當然,因為第乙個元素前面沒有待比較元素,所以對它執行「插入」操作是沒有意義的,所以迴圈從第二個元素開始。
以下是**示例:
void注意:這裡有人可能會圖「優化」而把key簡單地替換為arr[j],即當前選定的將被「抽出」然後再被「插入」的元素,但是,當insertionsort(int* arr, unsigned length)
arr[i + 1] =key;}}
i = j - 1且while迴圈滿足條件時,第一次while迴圈就會覆蓋掉arr[j]的值,具體效果表現為「排序」後的陣列有大片的重複元素,許多元素都丟失了。
以上就是插入排序的簡單介紹及實現。
插入排序演算法詳解及實現
插入排序相對氣泡排序而言是一種較為快捷方便的排序演算法。氣泡排序 插入排序原理很簡單,講一組資料分成兩組,我分別將其稱為有序組與待插入組。每次從待插入組中取出乙個元素,與有序組的元素進行比較,並找到合適的位置,將該元素插到有序組當中。就這樣,每次插入乙個元素,有序組增加,待插入組減少。直到待插入組元...
插入排序演算法詳解及實現
插入排序相對氣泡排序而言是一種較為快捷方便的排序演算法。氣泡排序 插入排序原理很簡單,講一組資料分成兩組,我分別將其稱為有序組與待插入組。每次從待插入組中取出乙個元素,與有序組的元素進行比較,並找到合適的位置,將該元素插到有序組當中。就這樣,每次插入乙個元素,有序組增加,待插入組減少。直到待插入組元...
演算法探索 插入排序演算法 簡單插入排序 希爾排序
常用的排序演算法分為 交換排序 氣泡排序 快速排序 插入排序 簡單插入排序 希爾排序 選擇排序 簡單選擇排序 堆排序 歸併排序 基數排序 桶排序 插入排序 顧名思義,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入 依據深海的理解舉乙個簡單的例子 未排序序列是 5,9,8,4,2 已排...