常見的排序演算法(2)

2021-09-29 21:09:13 字數 1038 閱讀 4034

自上而下的歸併

歸併排序主要思想:(借助於乙個輔助陣列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...