插入排序
:將待排序的資料元素與前面已經排好序的資料比較,將其插入到其中。
每趟都是從待排序的資料元素開始掃瞄。
典型的插入排序演算法有:
(1) 簡單直接插入排序
(2) 希爾排序
簡單直接插入排序**:
bool insertsort(int a,int n)
for (int i=1;i=0&&a[j]=val,val插在j的後面
a[j+1] = val;
} return true;
}
簡單直接插入排序時間複雜度為o(n2),它是一種穩定的排序演算法。
希爾排序:又叫縮小增量的排序演算法。假設增量值為d,則將隔間為d的元素分成一組,然後對每一組採用直接插入排序。
希爾排序**如下:
//希爾排序又稱縮小增量排序演算法
bool shellsort(int a,int n)
int d = n/2;
while(d>=1)
{ for (int i=d;i=0&&a[j]希爾排序時間複雜度為o(n*log2n),它是一種不穩定的排序演算法。
經典排序演算法2(插入排序)
a 插入排序分類 插入排序主要做兩件事,一是尋找插入點,二是移動插入點左側的資料 所以根據插入點的不同我們將插入排序又分為直接插入排序 折半插入排序和二路插入排序。原理 我將依次遍歷陣列中的元素,將陣列分為 使用中的 和 待使用中的 兩部分,在使用中的 資料時排序好的,待使用中的 資料時未排序的,我...
經典演算法之插入排序
一 基本思路 將乙個待排序的記錄,按照關鍵字大小插入到前面已經拍好的子串行的適當位置,直到全部記錄插入完成為止。如果序列基本有序,效率很高。二 include stdafx.h include includeusing namespace std void swap int a,int b void...
經典演算法之插入排序
問題 有一陣列a,長度為n,把陣列中的元素小到大重新排列。思路 我們把陣列分為已排序和未排序兩部分,把未排序的元素一次乙個插入到已排序部分的合適位置上。已排序部分逐漸增大,直到整個陣列變成有序的。一趟排序 假設從第n個元素開始是無序的,而其前面n 1個元素是有序的。把a n 取出來放入temp中。然...