手机
当前位置:查字典教程网 >编程开发 >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实现希尔排序的示例

Java实现堆排序(Heapsort)实例代码

java字符串替换排序实例

java使用jdbc链接Oracle示例类分享

java去除集合中重复元素示例分享 java去除重复

Java排序实现的心得分享

Java递归 遍历目录的小例子

java解析xml之sax解析xml示例分享

java获取当前日期使用实例

java文件重命名(文件批量重命名)实例程序代码分享

精品推荐
分类导航