自上而下的歸併
歸併排序主要思想:(借助於乙個輔助陣列aux)
1.把所有的資料拷貝到輔助陣列備份
2.對輔助陣列使用兩個指標,分別從左右逐個對比,原陣列也使用乙個指標
3.比較結果小的值把原陣列的值替換,原陣列指標加一
public
class
mergesort01
//對輔助陣列使用兩個指標
int i=lo;
int j=mid+1;
//mid是左右指標掃瞄的分界
//分別從左右逐個對比
for(
int k=lo;k<=hi;k++
)//左邊指標全部掃瞄結束,把右邊所有數值依次賦給原陣列
else
if(j>hi)
//右邊指標全部掃瞄結束,把左邊所有數值依次賦給原陣列
else
if(allsort.
less
(aux[i]
,aux[j]))
else
//此處是比較左右指標對應的值,比較結果小的值把原陣列的值替換}}
public
static
void
sort
(comparable[
] a)
//歸併排序因為要求mid兩邊已經是排序好的結果,所以此處使用迭代,
//當迭代到只有兩個比較項時再次迭代則結束,依次往回結束迭代,最終完全排序
public
static
void
mergesort
(comparable[
] a,
int lo,
int hi)
自下而上的歸併
與自上而下不同,此處使用for迴圈,merge方法同上,
public
static
void
mergesort01
(comparable[
] a)
}}
常見排序演算法 2 插入排序
時間複雜度為 o n 2 原理 將陣列分為兩部分,將後部分元素逐一插入前部分有序元素的適當位置 思路 插入排序的基本思想就是將無序序列插入到有序序列中,每次從待插入組中取出乙個元素,與有序組的元素進行比較,並找到合適的位置,將該元素插到有序組當中。就這樣,每次插入乙個元素,有序組增加,待插入組減少。...
常見的排序演算法
一 氣泡排序 include include void swap int a,int b void bubblesort int arr,int size int main void bubblesort a,5 for int i 0 i 5 i cout 二 選擇排序 void selectio...
常見的排序演算法
需要包含的標頭檔案 include stdafx.h include include include 氣泡排序是穩定排序 時間複雜度 o n 2 void swap int a,int b void bubblesort int a,int n void printnum int a,int n a...