具體做法:另設乙個和l.r同型別的陣列d,首先將l.r[1]賦值給d[1],並將的d[1]看成是在排好序的序列中處於中間位置的記錄,然後從l.r中第2個記錄起依次插入到d[1]之前或之後的有序序列中。
# include # include # define maxsize 20
typedef int keytype;
typedef struct
sqlist;
void createsqlist(sqlist &l)
l.length = n;
}void insersort(sqlist &l)
else if (l.r[i] > d[final])//待插入記錄大於d中最小值,插入到d[final]之後(不需移動d陣列的元素)。
else//待插入記錄大於d中最小值,小於d中最大值,插入到d的中間(需要移動d陣列的元素)。
d[j + 1] = l.r[i];
}
}
for (i = 1; i <= l.length; i++)//迴圈把d賦給l。
cout<<"最後的排序結果是:";//列印排序結果。
for (i = 1; i <= l.length; ++i)
cout << endl;
}int main(void)
直接插入排序 改進演算法 折半插入排序
這種改進是從比較次數入手的,並沒用減少移動的次數 include define maxsize 20 typedef int keytype typedef struct sqlist void createsqlist sqlist l l.length n void display sqlist...
排序演算法 2 直接插入排序 插入排序
直接插入排序是一種簡單的插入排序法,其基本思想是 把待排序的記錄按其關鍵碼值的大小逐個插入到乙個已經排好序的有序序列中,直到所有的記錄插入完為止,得到乙個新的有序序列 可以模擬平日打撲克的情況 當插入第i i 1 個元素時,前面的array 0 array 1 array i 1 已經排好序,此時用...
排序演算法 插入排序 直接插入
借鑑的網上排序演算法資料 寫一下自己怎麼理解的直接插入排序的 只是為了自己看懂 以便忘記的時候檢視,希望大神不要噴,有什麼不好的可以指出 詳細的請看 public static int a public void print int a system.out.println test 檔案初態不同時...