了解插入排序演算法

2021-10-22 05:42:15 字數 1899 閱讀 7959

在本教程中,您將學習插入排序的工作原理。此外,您還將找到使用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,直到找到已排序的元素小於或者等於新元素的位置 將...