源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

java二路归并排序示例分享

  • 时间:2020-05-12 12:18 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:java二路归并排序示例分享
归并排序就是采用分治法进行排序: (1)将一个数组分成小的2个数组分别进行排序; (2)之后将分出来的已经拍好序的数组进行合并;
[u]复制代码[/u] 代码如下:
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();     } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部