1.折半插入排序的定義
折半插入演算法是對直接插入排序演算法的改進,它通過「折半查詢」在比較區查詢插入點的位置,這樣可以減少比較的次數,但移動的次數不變。
2.折半插入排序的流程
最後使之成為新的有序表,重複n-1次完成整個排序過程。
3.折半插入排序的**實現
public
class binaryinsertsort ;
binaryinsertsort(data);
system.out.print("折半插入排序後:");
printresult(data);
}private
static
void
binaryinsertsort(int a) else
}for(j=i-1;j>=low;j--)
//插入temp
a[low] = temp;}}
//列印排序的最終結果
private
static
void
printresult(int a)
system.out.println();
}}
4.演算法分析
折半查詢只是減少了比較次數,但是元素的移動次數不變。因此,它的 空間複雜度 o(1) ,時間複雜度o(n^2),是一種穩定的排序演算法。
本人才疏學淺,若有錯,請指出
謝謝!
排序演算法 折半插入排序
include include define status int define max 20 typedef struct elemtype typedef struct sqlist 結構體的定義 void inital sqlist l 初始化陣列 bool lt int i,int j 比較...
折半插入排序演算法
折半插入排序演算法是直接插入排序演算法的改進 插入元素的位置通過折半查詢確定。折半插入排序演算法的時間複雜程度為o n 2 空間負責程度是o 1 具體演算法如下 資料結構如下 typedef struct elemtype recordtype 陣列array 0 的位置無效,充當輔助儲存空間 vo...
折半插入排序演算法
這個演算法中最難以理解的莫過於,對於查詢演算法的理解了。因為在這種查詢演算法中,相等的情況並沒有單獨的列舉出來跳出迴圈,演算法設計者這樣設計的目的是什麼呢?原來演算法設計者的目的是找到為了找到小於等於查詢值的最大最大值,或者大於等於查詢值得最小值,以便方便的進行插入。如在本個例子中l mid l 0...