資料結構之插入排序 折半插入排序

2022-07-13 06:36:09 字數 737 閱讀 4602

排序思路:通過折半查詢的方式找到合適的插入位置再插入。

演算法實現:

public

class

biinsertsort

else

//插入點在[mid+1,right]

left = mid+1;

}//直到找到合適的位置(left或right+1),接下來就將left/right+1後的元素後移

for(int j = i-1;j >= right+1; j --)

arr[right+1] =temp;

}

}public

static

void

main(string args) ;

system.out.println("排序之前:");

for(int

element : array)

biinsertsort(array);

system.out.println("\n排序之後:");

for(int

element : array)

}}

演算法分析:不管元素的初始序列為正序還是反序,其時間複雜度都和直接插入排序的一樣為o(n2)。不同的是折半插入排序中查詢的平均比較次數為log2(i+1)-1,

所以就平均效能而言,折半插入排序優於直接插入排序。

同樣,折半插排序的空間複雜度也是o(1),且也是一種穩定的排序。

資料結構 插入排序(直接插入排序 折半插入排序)

二 插入排序 1.直接插入排序 這裡我們注意,元素的選擇是從第二個元素開始!動態過程如下 遞增的 實現 include using namespace std void insertsort int a,int len 若小於前乙個元素,則繼續向前走,前乙個元素後移 演算法分析 優點 簡單,穩定。總...

插入排序 折半插入排序

折半插入排序 binary insertion sort 直接插入排序採用順序查詢法查詢當前記錄在已排好序的序列中插入位置,這個 查詢 操作可利用 折半查詢 來實 現,由此進行的插入排序稱之為折半插入排序 binary insertion sort 演算法思想 1 將待排序的記錄存放在陣列r 1.n...

插入排序 折半插入排序

折半插入排序是基於直接插入排序的優化。直接插入排序 將第i個元素插入時,通過折半查詢的方式,來查詢第i個元素合適的位置。當0 i 1 位置上的元素都已經排序ok,現需要插入第i個元素,設其值為temp 令low 0,high i,mid high low 2。那麼temp可能插入的位置是 low h...