歸併排序和快速排序

2021-09-09 08:37:00 字數 1333 閱讀 4540

歸併排序

先將問題分解為小問題即乙個個子序列,再將子串行按順序合併。

**:

class

mergesort

;mergesort

(a,0

, a.length -1)

;for

(int t : a)

}public

static

void

mergesort

(int

a,int m,

int n)

public

static

void

merge

(int

a,int m,

int n,

int r)

else

temp[k]

= a[j++];

k++;}

// 將沒有存入的數存入陣列

int start = i <= r ? i : j;

int end = i <= r ? r : n;

while

(start <= end)

temp[k++

]= a[start++];

// 將temp陣列拷回原陣列

for(i =

0; i <= n - m;

++i)

a[m + i]

= temp[i];}

}

快速排序:

​ 將陣列劃分為兩個子陣列,再將子陣列繼續劃分直到不能再劃分得到有序陣列。

**:

class

quicksort

;quicksort

(a,0

, a.length -1)

;for

(int t : a)

system.out.

print

(t +

" ");}

public

static

void

quicksort

(int

a,int m,

int n)

public

static

intpartition

(int

a,int m,

int n)}}

// temp = a[i];

// a[i] = a[n - 1];

// a[n - 1] = a[i];

a[n]

= a[i]

; a[i]

= pivot;

return i;

}}

歸併排序和快速排序

歸併排序的陣列排序任務可以如下完成 1 把前一半排序 2 把後一半排序 3 把兩半歸併到乙個新的有序陣列,然後再拷貝回原陣列,排序完成。include using namespace std void merge int a,int s,int m,int e,int tmp while p1 m ...

快速排序和歸併排序

遞推公式 merge sort p,r merge merge sort p,q merge sort q 1 r 終止條件 p r 10組測試資料 for let i 0 i 10 i 生成10個隨機元素的測試陣列 function gettestdata return ret 排序函式 func...

排序 歸併排序和快速排序

1,歸併排序的基本思想 1,將兩個或兩個以上的有序序列合併成乙個新的有序序列,比如有序序列 v 0 v m 和 v m 1 v n 1 合併為 v 0 v n 1 這種歸併方法稱為 2 路歸併 1,必須大於 1 個有序序列 2,必須有序 2,歸併的套路 1,將 3 個有序序列歸併為乙個新的有序序列,...