二分搜尋技術 合併排序 快速排序演算法 線時間選擇

2021-10-10 11:12:23 字數 2176 閱讀 3907

合併排序演算法是用分治策略實現對n個元素進行排序的演算法,其基本思想是將待排序元素分成大小。大致相同的兩個子集合,分別對兩個子集合進行排序,最終將排好序的子集和合併成要求的排好序的集合。

快速排序演算法是基於分治策略的另乙個排序演算法

線時間選擇實際上是模仿快速排序演算法設計出來的基本思想,也是對輸入速度進行遞迴劃分。

using

namespace std;

//二分搜尋

template

<

class

type

>

intbinarysearch

(type a,

const type& x,

int n)

return-1

;}//合併排序

template

<

class

type

>

void

merge

(type c[

],type d,

int l,

int m,

int r)

if(i>m)

else

}template

<

class

type

>

intcopy

(type a[

],type b,

int left,

int right)

}template

<

class

type

>

void

mergesort

(type a,

int left,

int right)

}//快速排序

template

<

class

t>

void

swap

(t & a,t & b)

template

<

class

type

>

intpartition

(type a,

int p,

int r)

a[p]

=a[j]

;a[j]

=x;return j;

}template

<

class

type

>

void

quicksort

(type a,

int p,

int r)

}//線性時間選擇

template

<

class

type

>

type select

(type a,

int p,

int r,

int k)

#endif

// lianghelong1_h_included

using

namespace std;

intmain()

;;const

int x=4;

int m =

binarysearch

(a,x,9)

; cout

" "

"合併排序"

<<

" ";

int b[4]

=;mergesort

(a,0,3

);for(

int j=

0;j<

4;j++

) cout<<

" "

"快速排序"

<<

" ";

int c[4]

=;quicksort

(a,0,3

);for(

int i=

0;i<

4;i++

) cout<<

" "

"線性時間搜尋"

<<

" ";

int d[4]

=;cout<<

select

(d,0,3

,2)

}

快速排序 歸併排序 二分

快速排序 分治 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.確定分界點 mi...

遞迴演算法 歸併排序,快速排序,二分查詢

待排序的陣列,演算法輸入 int arrintegers 10 輔助儲存空間 int tempintegers 10 從陣列中間劃分陣列為2個子陣列,遞迴呼叫歸併排序,然後合併 排序過程發生在合併時候 2個子陣列。輔助儲存空間為n。這裡使用的方式和 快速排序分析裡面有差別,這個是交換,那乙個是填坑 ...

歸併排序 二分

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