總體思路是:先記錄每一次要插入的值,插入的值依次與前面插入的值比較大小,直到找到那個值,然後後面的值全部後移空出的位置,就是他的正確位置。迴圈n次實現排序。
; printf("排序之前:\n");
for(int i=0; i<5; i++)
insertvalue(a,5);
printf("\n");
printf("排序之後:\n");
for(int i=0; i<5; i++)
}void insertvalue(int a,int n)
a[j+1]=key;//最終位置}}
最好情況下,正序,總的比較次數為n-1次,記錄移動的次數2(n-1),時間複雜度為o(n)。
最壞情況下,逆序,總的比較次數為(n+2)*(n-1)/2,移動(n+4)(n-1)/2次,時間複雜度o(n^2)。
平均情況下,各種概率相同,總的比較次數為(n+2)*(n-1)/4,移動(n+4)(n-1)/4次,時間複雜度o(n^2)。
當記錄基本有序或者待排序記錄中較少時,它是最佳排序方法。
C 實現插入排序演算法
插入排序演算法的原理 從前往後依次把元素插入到相應的位置。比插入元素大的向後移乙個單位,直到找到比其小或者相等的元素才停止迴圈,並把元素插入到當前位置。時間複雜度 o n 2 以下為實現 include using namespace std void sort int arr,int length...
排序演算法 插入排序 C 實現
插入排序的基本思想是每次將乙個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子檔案中的適當位置,直到全部記錄插入完成為止。常見的插入排序有插入排序 insertion sort 希爾排序 shell sort 二叉查詢樹排序 tree sort 圖書館排序 library sort patien...
排序演算法 插入排序 C 實現
插入排序演算法也是乙個複雜度為o n 2 的排序演算法,它的原理跟打撲克類似。在打撲克時,每摸到一張牌我們都會把它插入到手上撲克中的正確位置。那麼在排序中就是進行兩重迴圈,第一重迴圈遍歷陣列,第二重迴圈將當前元素插入到之前元素中合適的位置。給一組演示加深理解 對於第乙個元素因為之前沒有元素,不需要插...