/*
*直接插入排序演算法思想:
* 將整個資料表分成左右兩個子表,其中左子表為有序表,右子表為無序表;
* 整個排序過程就是將右子表中的元素逐個插入到左子表中,直到右子表為空,
* 而左子表成為新的有序表。
*//*
*演算法過程分析:
* 將待排序的元素存放在陣列r[n+1]中,在初始狀態下,r[0]為監視哨,r[1]為有序區,
* r[2]~r[n]為無序區。當操作r[i+1]時,此時r[1]~r[i]為有序區,則需要把r[i+1]分別
* 與r[i]~r[1]關鍵字比較。用r[j+1](1<=j<=i)與r[i+1]比較,若r[i]較小,則賦值為
* r[j+1]=r[j],否則賦值為r[j+1]=r[i+1]
*//*
*演算法效能分析:
* 演算法執行時比較、移動元素的次數約為(n*n)/4,所以演算法時間複雜度為o(n*n);
*/#include #define length 9
void insersort(int *order)
order[j+1]=order[0];//不會越界,最壞的情況是j=0,相等,依然會停止迴圈
}return;
}int main()
; //0是監視哨位,不參與排序
insersort(order);
int i=0;
for(i=1;ireturn 0;
}
插入排序 直接插入排序
一.插入排序的基本思想 將乙個記錄插入已排序好的有序表中,從而得到乙個新的記錄數加1的有序表。要點 設立哨兵,作為臨時儲存和判斷陣列邊界之用。所謂的哨兵,就是即將插入的記錄。二.示例 如果碰見相等的元素,會被插到後面,所以,相等元素的前後順序沒有改變,插入排序是穩定的。三.演算法實現 public ...
插入排序 直接插入排序
直接插入排序的基本思想 將乙個記錄插入到已排序好的有序表中,然後得到乙個新記錄數增1的有序表。也就是 先將序列的第1個記錄看成是乙個有序的子串行,然後從第2個記錄逐個進行插入,直至整個序列有序為止。如果碰見乙個和插入元素相等的,那麼插入元素把想插入的元素放在相等元素的後面。所以,相等元素的前後順序沒...
插入排序 直接插入排序
學習簡要筆記 直接插入排序的基本操作是向有序表中插入乙個記錄,在直接插入排序中,插入位置的確定是通過對有序表中關鍵碼的順序比較得到的。排列順序 從小到大 include void directinsertsort int main directinsertsort a,n int z 1 for z...