数据结构之——归并排序

来源:互联网 发布:卖淘宝小号的网站 编辑:程序博客网 时间:2024/06/05 08:06


归并排序

package Sort;import java.util.Arrays;public class MergeSort {public int[] mergeSort(int[] A ,int n){int first = 0;int last = n-1;process(A,first,last);return A;}//递归调用的分治函数private void process(int[] a, int first, int last) {if(first>=last)return;int mid = (first+last)/2;process(a,first,mid);    // 左边递归process(a,mid+1,last);  // 右边递归merge(a,first,mid,last); // 合并}//两个有序数组进行合并 ,其实有序的过程应该是在merge函数中实现的。private void merge(int[] a, int first, int mid, int last) {int i=first;int j=mid+1;int k=0;int[] temp = new int[last-first+1]; //用来暂时存储中间结果,即将原数组中的元素取出,进行合并后暂时存储在temp中while(i<=mid&&j<=last){if(a[i]<a[j]){temp[k++] = a[i++]; }else{temp[k++] = a[j++]; }}while(i<=mid){temp[k++] = a[i++];}while(j<=last){temp[k++] = a[j++];}//将排好序的对应部分拷贝到 a 数组中 ,即每次归并时,都改变了原数组A中的数据。for(int i1=0;i1<temp.length;i1++){a[first++] = temp[i1];}}public static void main(String[] args) {int[] a ={2,1,3,8,5,7,4,10};int[] b = new int[]{};MergeSort ms = new MergeSort();b = ms.mergeSort(a, 8);System.out.println(Arrays.toString(b));}}








0 0
原创粉丝点击