排序演算法之折半插入排序

2021-07-06 05:49:47 字數 466 閱讀 8830

在直接插入排序的基礎上做的改進,直接插入排序在尋找插入位置時是從後到前依次比較,直到找到插入位置。而折半插入排序在尋找插入位置時,先與有序序列中的中間位置r[mid]進行比較,如果比中間位置上的記錄大,則在r[mid+1…n]中尋找,繼續與右區間的中間記錄進行比較;如果比中間位置上的記錄小,則在r[0…mid-1]中尋找,繼續與左區間中的資料進行比較。

typedef

int datatype;

int binaryinsertionsort(datatype *array, int size)

for(i = 1; i < size; i++) else

}//將插入位置到待插入元素的位置上的元素整體向後移動乙個位置

for(j = i; j > low; j--)

array[low] = temp;

}return

0;}

排序演算法之折半插入排序

折半插入排序是對直接插入排序的簡單改進,對於直接插入排序而言,當第i 1趟需要將第i個元素插入前面的0 i 1個元素序列中時,總是需要從i 1個元素開始,逐個比較每個元素,直到找到它的位置。這顯然沒有利用前面0 i 1個元素已經有序這個特點,而折半插入排序則改進了這一點。對於折半插入排序而言,當需要...

排序演算法 折半插入排序

include include define status int define max 20 typedef struct elemtype typedef struct sqlist 結構體的定義 void inital sqlist l 初始化陣列 bool lt int i,int j 比較...

排序演算法 折半插入排序

1.折半插入排序的定義 折半插入演算法是對直接插入排序演算法的改進,它通過 折半查詢 在比較區查詢插入點的位置,這樣可以減少比較的次數,但移動的次數不變。2.折半插入排序的流程 最後使之成為新的有序表,重複n 1次完成整個排序過程。3.折半插入排序的 實現public class binaryins...