合併排序演算法是用分治策略實現對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 若後面一部分較小,則將後面...