歸併排序演算法

2021-09-06 22:55:59 字數 1059 閱讀 9734

package

com.cn.gao;

//歸併排序演算法設計

public

class

mergesort

m=i;

k=i;

l=i+len;

//合併相鄰有序段

while(ij)

else

}//將未合併的部分複製到陣列b中

while(ilen)

while(l<=j)

i=j+1; //

下一對有序段左段的開始下標

}

//將剩餘的有序段加入b中

if(i}

}/*** 最終合併演算法

* @param

a 原始陣列

* @param

n 陣列元素個數

*/public

static

void mergesort(int a, int

n)

if(flag==1)

flag=1-flag;

len=2*len;

count++;

//輸出每趟歸併後的結果

system.out.print("第"+count+"次排序的結果為:");

for(int i=0;i)

system.out.println();

}if(flag==1)}}

public

static

void

main(string args)

//輸出排序前的陣列

system.out.println("排序前的陣列為:");

for(int i=0;i)

system.out.println();

//對陣列排序

mergesort(a,size);

//輸出排序後的陣列

system.out.println("排序後的陣列為:");

for(int i=0;i)

system.out.println();

}}

歸併演算法 歸併排序

歸併演算法 歸併排序 這周需要用到歸併演算法,於是找了找相關的資料,整理如下 歸併排序 merge sort 是利用 歸併 技術來進行排序。歸併是指將若干個已排序的子檔案合併成乙個有序的檔案。兩路歸併演算法 1 演算法基本思路 設兩個有序的子檔案 相當於輸入堆 放在同一向量中相鄰的位置上 r low...

歸併排序演算法

include stdafx.h include include include 合併兩段已經排好序的列表 void merge int list int mergelist int left int mid int right else if i mid else 將列表list按照seglen分...

歸併排序演算法

這個演算法感覺比插入難理解一些,下面說說我的理解 歸併排序的步驟 1.把長度為n的序列分為兩個長度為n 2的子串行 2.對這兩個子串行分別採用歸併排序 3.將兩個子串行合併成乙個最終的排序序列 通過步驟2可看到 在歸併排序中又用了歸併排序,可見這是乙個遞迴的過程。例如乙個陣列 a 8 下面採用遞迴排...