在本教程中,您將學習插入排序的工作原理。此外,您還將找到使用c語言進行插入排序的示例。
插入排序的工作原理類似於我們在紙牌遊戲中對手中的牌進行排序。
假設第一張卡片已經排序,然後選擇一張未排序的卡片。如果未排序的卡大於手上的卡,則將其放置在右側,否則放置在左側。以同樣的方式,將其他未分類的卡片取出並放在正確的位置。
插入排序也使用類似的方法。
插入排序是一種排序演算法,它將未排序的元素放置在每次迭代的適當位置。
插入排序如何工作?
假設我們需要對以下陣列進行排序。
假定陣列中的第乙個元素已排序。取第二個元素並將其單獨儲存在key中。
將key與第乙個元素進行比較。如果第乙個元素大於key,則key放在第乙個元素的前面。
現在,前2個元素已經完成排序了。
把第三個元素和左邊的元素比較一下。把它放在比它小的元素後面。如果沒有比它小的元素,則將它放在陣列的開頭。
同樣,將每個未排序的元素放置在其正確的位置。
插入排序演算法偽**
insertionsort
(array)
mark first element as sorted
for each unsorted element x
'extract' the element x
for j <
- lastsortedindex down to 0
if current element j > x
move sorted element to the right by 1
break loop and insert x here
end insertionsort
c示例// insertion sort in c
#include
// function to print an array
void
printarray
(int array,
int size)
printf
("\n");
}void
insertionsort
(int array,
int size)
array[j +1]
= key;}}
// driver code
intmain()
;int size =
sizeof
(data)
/sizeof
(data[0]
);insertionsort
(data, size)
;printf
("sorted array in ascending order:\n");
printarray
(data, size)
;}
複雜度
時間複雜度
空間複雜度
空間複雜度是o(1),因為使用了乙個額外的變數key。
插入排序應用
在以下情況下使用插入排序:
參考文件
[1]parewa labs pvt. ltd.insertion sort algorithm[eb/ol].
插入排序演算法
插入排序演算法 思想 把排序過程看作是序列單個有序擴充套件為整體有序的過程,即首先取序列第二個元素與第乙個元素比較,將其插入合適位置,再將第三個元素與前兩個元素比較,將其插入合適位置,如此進行,直到最後取第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,直到找到已排序的元素小於或者等於新元素的位置 將...