Algorithm 歸併排序 快速排序

2021-09-09 07:39:42 字數 1231 閱讀 8681

注:圖是別人的.

由圖可以看出來,歸併就是:

先將陣列對半分,1分為2,2再對半分,一直分到只有單個的時候。

對只能分到單個對時候停止分割,對兩個進行比較排序,

第一次排序好後,至少2個數是順序的,之後是遞迴的過程,同理歸併別的分組。

下面**分析下:

// a為需要排序的陣列,low是低位,high是高位

static

void

sort

(int

a,int low,

int high)

}static

void

merge

(int

a,int low,

int mid,

int high)

else

}// 如果左邊還沒有結束,則繼續進行分配

while

(i <= mid)

// 右邊也是這樣

while

(j <= high)

// 將重新排序好的temp 覆蓋到a陣列上面去

注:出處

// 遞迴實現

static

void

quicksort

(int

a,int low,

int high)

// 如果小於就向右移動,直到大於temp的數

while

(a[i]

<= temp && i < j)

// 這裡有個iif

(i < j)

}// 和temp交換

a[low]

= a[i]

; a[i]

= temp;

// 遞迴排序左邊

quicksort

(a, low, i -1)

;// 遞迴排序右邊

quicksort

(a, i +

1, high)

;}

Algorithm(二) 歸併排序

歸併 merge 排序法是將兩個 或兩個以上 有序表合併成乙個新的有序表,即把待排序序列分為若干個子串行,每個子串行是有序的。然後再把有序子串行合併為整體有序序列。歸併排序 歸併排序是建立在歸併操作上的一種有效的排序演算法。該演算法是採用 分治法 divide and conquer 的乙個非常典型...

插入排序和歸併排序 Algorithm

插入排序 templatevoid insert sort t ptr,int length ptr j 1 key 歸併排序 test case merge ptr,i,i,i 1 test case merge ptr,i,i,i templatevoid merge t ptr,int bg,...

快速排序 歸併排序

感覺好久之前不寫這些基礎的東西忽然覺著,想複習一下,就簡單溫習一下排序的例子 package com.ruishenh.algoritmic public class sort static void printmsg int arrs system.out.println static int g...