/*內部排序之插入排序*/
#include
using namespace std;
#include
/*直接插入排序
1.就地排序,不需要申請新的陣列!
2.需要哨兵複製待插入的資料
3.採用邊比較邊移位的方式
4.空間複雜度為o(1)
時間複雜度為o(n*n)
*/ void insert_sort1(int a,int n)
a[j+1]=a[0];}}
}//折半插入排序
/*1.就地排序,不需要申請新的陣列!
2.先比較完,找到應該插入的位子,再統一移動
3.空間複雜度為o(1)
時間複雜度為o(n*n)
*/ void insert_sort2(int a,int n)
a[mid]=a[0];}}
} //希爾排序
/*1.基本思想:先將整個待排序記錄序列分割成若干個子串行分別進行直接插入排序,待整個序列中的記錄"基本有序"時,再對全體記錄進行一次直接輸入排序
2.尚未求出乙個最好的增量序列,希爾提出的方法是d1=n/2,d(i+1)=d(i)/2,知道增量為1;
3. 空間複雜度為o(1)
時間複雜度為約o(n的1.3次方) ,最壞情況下時間複雜度為o(n*n)
*/ void insert_sort3(int a,int n)
// insert_sort1(num,4);
// insert_sort1(num,4);
insert_sort3(num,4);
for(int i=1;i<=4;i++)
資料結構 內部排序 插入排序
4.main函式 5.小結 說明 以下 實現最終均為遞增序列,即從小到大排序。include define elemtype int 函式宣告 void directinsertsort elemtype a int n 1.直接插入排序 void halfinsertsort elemtype a...
資料結構 排序之插入排序
插入排序o n2 的執行時間 思想是 若陣列長度為n 那麼把陣列序號從1到n 1的值依次往前進行比較 這裡需要乙個for迴圈 注意每個數在比較的時候它前面的資料都是已經排好序號的 因為從序號為1時就開始排序了 注意我們這裡用類似堆中下浮和上浮的交換方法 把需要交換的資料拿出來 和前面的資料依次進行比...
資料結構排序之插入排序
package sort 最簡單的排序演算法之一是插入排序 insertion sort 插入排序由n 1躺排序組成。對於 p 1到n 1 趟,插入排序保證從位置0到位置p上的元素為已排序狀態。插入排序利用了這樣的 事實 已知位置0到位置p 1 上的元素處於排過序的狀態。例子 原始陣列 34 8 6...