归并排序,必须要求数组有序 package com.yan.test; public class MergeSort { public static void merge(int data[],int s,int m,int n){ int[] temp = new int[n-s+1]; int i,start = s,k=0; for(i=m+1;s<=m&&i<=n;++k){ if (data[s]<data[i]){ temp[k] = data[s++]; }else { temp[k] = data[i++]; } } for (;s<=m;++k){ temp[k] = data[s++]; } for (;i<=n;++k){ temp[k] = data[i++]; } for (i=0;i<k;i++){ data[start++] = temp[i]; } for(int t:temp){ System.out.print(t+" "); } System.out.println(); //return data; } public static void mSort(int[] data,int s,int t){ int m; if (s<t){ m = (s+t)/2; mSort(data,s,m); mSort(data,m+1,t); merge(data,s,m,t); } } public static void Merge(int[] data,int n){ mSort(data,0,n-1); } public static void main(String[] args) { int[] data = new int[10]; for(int i=0;i<data.length;i++){ data[i] = (int)(Math.random()*100+1); } for (int da:data){ System.out.print(da+" "); } System.out.println(); Merge(data,data.length); for (int da:data){ System.out.print(da+" "); } } }
java归并排序
最新推荐文章于 2024-10-05 15:32:05 发布