快速排序 歸併排序 二分

2022-05-29 13:36:10 字數 951 閱讀 4850

快速排序——分治

1.確定分界點:q[l+r>>1]

2調整區間;

保證做區間的數滿足<=x,右區間的資料.>=x。

3.遞迴處理左右兩段。

void quick_sort(int q,int l,int

r)quick_sort(q,l,j); quick_sort(q,j+1

,r);

}

歸併排序——分治

1.確定分界點:mid=(l+r)>>1。

2.遞迴排序left、right。

3.歸併——合二為一

void merge_sort(int q, int l, int

r)

二分法——整數

bool check(int x)  //

檢查x是否滿足某種性質

//區間[l, r]被劃分成[l, mid]和[mid + 1, r]時使用:

int bsearch_1(int l, int

r)

returnl;}

//區間[l, r]被劃分成[l, mid - 1]和[mid, r]時使用:

int bsearch_2(int l, int

r)

return

l;}

二分法——浮點數

bool check(double x)  //

檢查x是否滿足某種性質

double bsearch_3(double l, double

r)

return

l;}

歸併排序 二分

歸併排序就是將陣列反覆拆分成兩部分,然後分別在這兩部分裡面再反覆拆分,講拆分成的兩部分按順序排好之後再歸併起來,歸併起來之後再反覆交換位置,最終使整個陣列按順序排列。具體操作方法 按從小到大排 拆分成的兩部分依次比較,若前半部分的較小,將其存入陣列tmp中,將前面的下標i 若後面一部分較小,則將後面...

二分歸併排序

對n個不同的數構成的陣列a 1 n 進行排序,其中n 2 k。二分歸併排序對待排序陣列先劃分後歸併,以陣列49,38,65,97,76,13,27,57為例,在二分歸併中,需要進行如下順序 劃分將原問題歸結為規模為n 2的2個子問題 繼續劃分,將原問題歸結為規模為n 4的4個子問題。繼續 當子問題規...

二分歸併排序

1.問題 二分歸併排序 對n個不同的數構成的陣列a 1 n 進行排序,其中n 2 k 2.解析 1 對於一組資料a n 申請臨時空間,temp n 用於臨時存放資料,劃分為兩個序列 2 設定兩個指標分別指向兩個序列的首部,其中中間資料mid start end 2劃分到前乙個序列當中 3 比較兩個指...