排序演算法 2 路插入排序

2021-06-12 02:59:28 字數 678 閱讀 2247

#include#include#define status int 

#define max 20

typedef struct elemtype;

typedef struct sqlist;

void inital(sqlist &l) //初始化

bool lt(int i,int j)

void towrodeinsertsort(sqlist &l) //2-路插入排序函式

else if(rt(l.r[i].key,d1[final].key)) //當要插入的記錄大於d1中的最大值,讓final+1 再插入到final的位置(不需要移動d1)

else //當要插入的記錄大於d1最小值而又小於d1最大值,用while迴圈判斷並移動d1直到找到插入點

d1[j+1]=l.r[i]; //記錄插入到合適的位置

} }for(i=1;i<=l.length;i++) }

void print(sqlist l)//排序

}void main()

//演算法分析:1.2-路插入排序目的是減少排序過程中移動次數的減少

//2.需要n個記錄的輔助空間

2路插入排序

基本思想 以第乙個記錄為界,將整個記錄序列分成兩部分進行處理。將不小於第乙個記錄的所有記錄用折半插入的方式插入左路的序列序列中,將小於第乙個序列的記錄插入用折半插入的方法插入到右路的序列中。final為左路最後乙個元素,first為右路第乙個元素。空間複雜度o n 時間複雜度o n 2 這是穩定的排...

直接插入排序 改進演算法 2路插入排序

具體做法 另設乙個和l.r同型別的陣列d,首先將l.r 1 賦值給d 1 並將的d 1 看成是在排好序的序列中處於中間位置的記錄,然後從l.r中第2個記錄起依次插入到d 1 之前或之後的有序序列中。include include define maxsize 20 typedef int keyty...

2路插入排序實現

1,2路插入排序的思想 在折半插入排序的基礎上改進,目的是減少排序過程中激動記錄的次數,既然是在折半的基礎上,那麼應該也能減少查詢操作。具體做法 另設乙個和原陣列l同型別的陣列d,將l 1 賦值給d 0 並將d 0 看成是在排好序的序列中處於中間的位置,即當l中來乙個數和d 0 比較,大往d 0 後...