#include
<
stdio.h
>
#include
<
stdlib.h
>
void
printheap(
const
char
*strmsg,
intarray,
intnlength);
void
insertionsort1(
int*
items,
intcount)
void
insertionsort2(
inta,
intsize);
void
printarray(
const
char
*strmsg,
intarray,
intnlength);
intmain(
intargc,
char
*ar**)
;insertionsort1(data,
13);
printarray(
"insertion sort:
",data,
13);
system(
"pause
");
return0;
}/*插入排序思路:
將陣列分成兩個區域:已排序區域和未排序區域。首先假設陣列的第乙個元素處於已排序區域,
第乙個元素之後的所有元素都處於未排序區域。
排序時用到兩層迴圈,第一層迴圈用於從未排序區域中取出待排序元素,並逐步縮小未排序區域,
第二層迴圈用於從已排序區域中尋找插入位置(即不斷地從已排序區域中尋找比待排序元素大的元素,
然後將較大的已排序區的元素後移,後移的最終結果是已排序區元素的最後乙個元素佔據
待排序元素原來的位置,而已排序區中間空出乙個位置),最後將待排序元素插入元素後移後留下的空位。
注:待排序元素所在位置與已排序元素的最後乙個元素是相鄰的,因此進行移位迴圈時第一次後移時將已排序元素的最後乙個元素直接移至待排序元素的位置即可。元素比較和元素移位共用乙個迴圈,即邊比較邊移位。
*/void
insertionsort1(
int*
items,
intcount)
}void
insertionsort2(
inta,
intsize)
//stopped when a[j-1]<=v,put v at position
a[j]=v;
} }void
printarray(
const
char
*strmsg,
intarray,
intnlength)
printf("\n
");}
C語言實現插入排序
插入排序 我在學習一些簡單的演算法,我用文字記錄我的進步。插入排序 其實就是在待排序列中找到,沒有排序好的元素,插入的適當的位置,本文以公升序為例,簡單的講解一下。直接看下面的 include stdio.h include stdlib.h include string.h void swap i...
C語言實現插入排序
插入排序是排序演算法的一種,它不改變原有的序列 陣列 而是建立乙個新的序列,在新序列上進行操作。這裡以從小到大排序為例進行講解。插入排序的基本思想是,將元素逐個新增到已經排序好的陣列中去,同時要求,插入的元素必須在正確的位置,這樣原來排序好的陣列是仍然有序的。在實際使用中,通常是排序整個無序陣列,所...
插入排序(C 語言實現)
插入排序分為直接插入排序和折半插入排序,直接插入排序利用遍歷的方式查詢插入位置,時間複雜度為n 2,直接插入法由於不會改變相同元素的相對順序,所以直接插入排序是一種穩定的排序演算法。折半插入排序 二分插入排序 折半插入利用二分法查詢插入位置,只是減少了查詢比較的操作,所以其時間複雜度仍為n 2,二分...