手机
当前位置:查字典教程网 >编程开发 >Java >java二路归并排序示例分享
java二路归并排序示例分享
摘要:归并排序就是采用分治法进行排序:(1)将一个数组分成小的2个数组分别进行排序;(2)之后将分出来的已经拍好序的数组进行合并;复制代码代码如下...

归并排序就是采用分治法进行排序:

(1)将一个数组分成小的2个数组分别进行排序;

(2)之后将分出来的已经拍好序的数组进行合并;

复制代码 代码如下:

import java.util.Scanner;

public class MergeSort {

int[] a=null;

int[] b=null;

int n;

Scanner sin=null;

MergeSort()

{

a=new int[10000];

b=new int[10000];

sin=new Scanner(System.in);

}

void sort(int start,int end) //排序a[start...end]

{

int mid;

if(start >= end) //只有一个元素的时候,直接返回

return ;

else

{

mid=(end-start)/2; //将元素分成两半,分别排序

sort(start,start+mid);

sort(start+mid+1,end);

//归并两个有序的数组a[start...start+mid]和a[start+mid+1...end]

merge(start,start+mid,end);

}

}

void merge(int start,int mid,int end) //归并

{

int t=start;

int i=start,j=mid+1;

while(i<=mid && j<=end)

{

if(a[i]<a[j])

b[t++]=a[i++];

else

b[t++]=a[j++];

}

while(i<=mid)

b[t++]=a[i++];

while(j<=end)

b[t++]=a[j++];

for(i=start;i<=end;i++) //排序后的内容写回a数组的相应位置去

a[i]=b[i];

}

void run()

{

System.out.print("输入要排序的数的个数:");

n=sin.nextInt();

for(int i=0;i<n;i++)

a[i]=sin.nextInt();

sort(0,n-1);

System.out.println("排序结果是:");

//输入要排序的数据

for(int i=0;i<n;i++)

System.out.println(a[i]+" ");

}

public static void main(String[] args) {

new MergeSort().run();

}

}

【java二路归并排序示例分享】相关文章:

java线程并发semaphore类示例

java多线程入门知识及示例程序

Java排序实现的心得分享

java裁剪图片并保存的示例分享

用Java实现希尔排序的示例

java字符串反转示例分享

java实现人民币大小写转换方法分享

java向文件末尾添加内容示例分享

java反射机制示例详解

java线程并发blockingqueue类使用示例

精品推荐
分类导航