演算法描述:
從陣列第二個元素開始向後掃瞄,將每個元素插到它前面所有元素的合適位置。
下面給出整數陣列的實現,對於其他複雜型別只需實現相應的自定義比較函式即可:
#include #include using namespace std;
const int num=20;
void exch(int* s,int a,int b)
s[b]=mid;
}int main()
{int array[num];
int min=0;
srand(2);//初始化隨機數
對於隨機長度為n的且主鍵不重複的陣列,平均情況下的插入排序需要n^2/4次比較n^2/4次交換。最壞情況下需要n^2/2次比較和n^2/2次交換,最好情況下需要n-1次比較和0次交換。
插入排序對部分有序的陣列十分高效,也適合小規模陣列。
可以通過在內迴圈中將較大元素都向右移動而不是交換移動來提高演算法效率(但是難點是怎樣判斷他的大小)。
C 實現插入排序
感謝morewindows的文章,造福我等學渣啊 複雜度應該也是o n 2 using system using system.collections.generic using system.linq using system.text namespace 排序 if j i 1 將待插入的a i...
插入排序 C 實現
寫給自己!插入排序演算法,其如同打牌,手裡總是已經排好續的牌,而桌面上的是未知牌,其思想是 拿起一張牌,與手中的牌從右到左 從大到小 進行比較,找到合適的位置插入即可。插入排序演算法沒有合併排序算好效率高,他隨著輸入的增大而增大。思想 對於將要插入的第j個元素,與已經排序好的0 j 1個元素從j 1...
插入排序 C 實現
插入排序的基本思想是每次將乙個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子檔案中的適當位置,直到全部記錄插入完成為止。常見的插入排序有插入排序 insertion sort 希爾排序 shell sort 二叉查詢樹排序 tree sort 圖書館排序 library sort patien...