八大排序演算法之歸併排序

2021-10-08 03:21:20 字數 1182 閱讀 6597

說明:歸併排序是建立在歸併操作上的一種有效的排序演算法。該演算法是採用分治法(divide and conquer)的乙個非常典型的應用。將已有序的子串行合併,得到完全有序的序列;即先使每個子串行有序,再使子串行段間有序。若將兩個有序表合併成乙個有序表,稱為2-路歸併。

思路:

1.將序列中待排序數字分成若干組,每個數字分為一組

2.將若干組兩兩合併,保證合併後的組是有序的

3.重複第二步操作直到只剩下一組,排序完成

;//讓左邊多乙個,或者讓右邊多乙個都是無所謂的

mergesort

(arr,left,mid)

;mergesort

(arr,mid+

1,right)

;merge

(arr,left,mid,right);}

//該步的操作是,將兩個有序的陣列,整合成乙個有序的陣列

public

static

void

merge

(int

arr,

int left,

int mid,

int right)

//左邊陣列長

while

(leftpoint<=mid)

//右邊陣列長

while

(rightpoint<=right)

//將輔助陣列中的資料,輸入到原陣列中

for(

int j =

0;jpublic

static

void

main

(string[

] args)

;mergesort

(arr,

0,arr.length-1)

;for

(int a:

arr)

}}

八大排序演算法 之 歸併排序

排序思想 如圖所示 排序趟數 如果2 n 如此例,length 9 8,趟數是4.排序原理 1,第一趟將相鄰兩個數歸併成乙個有序的小組合 2,第二趟將相鄰兩個有序小組合歸併成乙個更大的的有序組合 3,依次類推,直到將所有數歸併成乙個最大的組合 具體 實現如下 歸併排序主方法 public stati...

八大排序演算法之歸併排序

介紹到這裡只剩下歸併排序和基數排序沒有介紹過了。這兩種演算法各有各的特點,歸併排序是分治法的一種有效應用,所謂歸併是指將若干個已排好序的部分合併成乙個有序的部分。而基數排序又稱為桶排序,是唯一一種不需要元素之間相互比較就可以排好序的排序演算法。一 歸併排序 1.基本思想 這裡介紹的歸併排序是非遞迴版...

八大排序演算法之歸併排序

歸併排序的核心是,每次將兩個有序陣列組合成為乙個新的有序陣列。對於倆個有序陣列 def merge a list,b list list l a,l b len a len b res 0 for i in range l a l b index 0 i,j 0,0 while i歸併排序中,兩個有...