c 插入排序

2021-09-12 23:27:22 字數 892 閱讀 9245

從整個待排序列中選出乙個元素插入到已經有序的子串行中去,得到乙個有序的、元素加一的子串行,直到整個序列的待插入元素為0,則整個序列全部有序。在實際的演算法中,我們經常選擇序列的第乙個元素作為有序序列(因為乙個元素肯定是有序的),我們逐漸將後面的元素插入到前面的有序序列中,直到整個序列有序。

簡單插入排序在最好情況下,需要比較n-1次,無需交換元素,時間複雜度為o(n);

在最壞情況下,時間複雜度依然為o(n^2);

插入排序是在乙個已經有序的小序列的基礎上,一次插入乙個元素。當然,剛開始這個有序的小序列只有1個元素,就是第乙個元素。比較是從有序序列的末尾開始,也就是想要插入的元素和已經有序的最大者開始比起,如果比它大則直接插入在其後面,否則一直往前找直到找到它該插入的位置。如果碰見乙個和插入元素相等的,那麼插入元素把想插入的元素放在相等元素的後面。所以,相等元素的前後順序沒有改變,從原無序序列出去的順序就是排好序後的順序,所以插入排序是穩定的。

c++實現**:

#includeusing namespace std;

void insertsort_up(int* a, int length);

void insertsort_down(int* a, int length);

int main()

; int len = sizeof(a)/sizeof(a[0]);

//insertsort_up(a, len);

insertsort_down(a,len);

cout<<"after:"<=0 && a[j]>key)

a[j+1] = key; }}

void insertsort_down(int* a, int length)

a[j+1] = key;

}}

插入排序C

變數 i 1.代表待插入數字的下標 preindex.代表前乙個元素的下標 length.代表陣列的長度 排序過程 arr 0 跳過,從arr 1 開始,每乙個數都和它前面的數字比較。while iarr i 那麼前大後小,亂序 arr preindex 1 current i include us...

C 插入排序

c 插入排序 開發工具與關鍵技術 c visualstudio插入排序和氣泡排序有一點相似,但是它們是完全不同的兩種排序方式,插入排序的方式是這樣的,例如有乙個三個元素的陣列排序順序是1,0,3我們是公升序排序方式,元素1我們不管它,元素0我們就拿出來和元素1比較這時元素0比元素1小,元素1往後移一...

C 插入排序

插入排序思想 將陣列分成兩組,第乙個陣列值為一組並認為該陣列為有序的,並從後面陣列n 1個數中逐個選擇與已經有序的陣列進行比較,插入到已經排序好的陣列中,直至陣列中的所有陣列有序排列為止。這樣的話,n個元素需要進行n 1趟排序!陣列a length 10 i 1,j 0,a j 1 1i 1,j 1...