归并排序(2017-09-05)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了归并排序(2017-09-05)相关的知识,希望对你有一定的参考价值。

归并排序是相当于将一个数组分为有序数组,在进行合并。

也就是将每个数当成一个有序数组,一 一合并在两两合并

知道将数组合并完。这里一个方法用来递归数组,也就是理论上将数组分离

第二个方法是将其进行合并(有序数组的合并)

这种归并如果不熟悉的人很容易报异常,所以多多分析。

 1     public void joinSort(int[] a,int start,int end) {
 2         int mid=(start+end)/2;
 3         if(start<end) {
 4             //递归调用将数组分为前一半
 5             joinSort(a,start,mid);
 6             //将数组分为后一半
 7             joinSort(a,mid+1,end);
 8             //调用合并两个有序数组
 9             merge(a,start,end,mid);
10         }
11     }
12     public void merge(int[] a,int start,int end,int mid ) {
13         int[] temp=new int[a.length];
14         int i=start,j=mid+1,k=start;
15         int tmp=start;
16         while(i<=mid&&j<=end) {
17             if(a[i]<a[j]) {
18                 temp[k++]=a[i++];
19             }else{
20                 temp[k++]=a[j++];
21             }
22         }
23         //如果哪里写的出了点小差错,很容易遭成数组索引越界的异常,所以一定要想好
24         while(k<=end) {
25             if(i<=mid) {
26                 temp[k++]=a[i++];
27             }else {
28                 temp[k++]=a[j++];
29             }
30         }
31          while(tmp<=end){
32                 a[start++]=temp[tmp++];
33             }
34     }

 

以上是关于归并排序(2017-09-05)的主要内容,如果未能解决你的问题,请参考以下文章

归并排序:步骤讲解与代码实现

python代码实现归并排序(Merge Sort )

排序之外部排序

Python代码实现归并排序

Python代码实现归并排序

算法排序02——归并排序介绍及其在分治算法思想上与快排的区别(含归并代码)