归并排序

xiaoxiao2021-02-27  404

import java.util.Arrays; public class MergeSort { private static void merge(int[] a,int low,int mid,int high){ int[] temp=new int[high-low+1]; int i=low;//左指针 int j=mid+1;//右指针 int k=0; //把较小的数移到新数组中 while(i<=mid&&j<=high){ if(a[i]<a[j]){ temp[k++]=a[i++]; }else{ temp[k++]=a[j++]; } } //把左边剩余的数移入数组 while(i<=mid){ temp[k++]=a[i++]; } //把右边剩余的数移入数组 while(j<=high){ temp[k++]=a[j++]; } //把数据从临时数组复制到原来的数组 for(int k2=0;k2<temp.length;k2++){ a[k2+low]=temp[k2]; } } /* * 每次归并的有序集合长度 */ public static int[] mergeSort(int[] a,int low,int high){ int mid=(low+high)/2; if(low<high){ //左边 mergeSort(a,low,mid); //右边 mergeSort(a,mid+1,high); //左右归并 merge(a, low, mid, high); } return a; } public static void main(String[] args) { int []a={2,7,8,3,1,6,9,0,5,4}; mergeSort(a, 0, a.length-1); System.out.println(Arrays.toString(a)); } }
转载请注明原文地址: https://www.6miu.com/read-2999.html

最新回复(0)