合并排序算法
来源:互联网 发布:迅龙数据软件注册码 编辑:程序博客网 时间:2024/05/17 23:38
import java.util.Arrays;/* * 合并排序算法 * 思想:将待排序的序列分为大致相同的两个子序列,用合并排序分别对两个子序列进行排序 */public class MergeSort{//Merge函数是把两个部分排好序的序列合并为一个数组//例如数组a={2,3,8,9,1,4,5,7},然后将它合并为一个排好序的数组public static void merge(int a[],int low,int middle,int high){int i,j,k;k=0; int b[]=new int[high-low+1];//数组b用来存放临时排好序的数 i=low; j=middle+1; while(i<=middle&&j<=high) { if(a[i]<=a[j]) b[k++]=a[i++]; else b[k++]=a[j++]; } while(i<=middle) { b[k++]=a[i++]; } while(j<=high) { b[k++]=a[j++]; } for(i=low;i<=high;i++) { a[i]=b[i-low];// b[2] }}public static void sort(int a[],int low,int high){int middle;if(low<high){ middle=(high+low)/2; //System.out.println(middle); sort(a,low,middle);// System.out.println(a[middle+1]); sort(a,middle+1,high); // System.out.println(a[high]); merge(a,low,middle,high);}} public static void main(String[] args) { int a[]={2,3,1,4}; int middle=1; merge(a,0,middle,a.length-1); //sort(a,0,a.length-1); System.out.println(Arrays.toString(a)); }}