zoukankan      html  css  js  c++  java
  • 让我们来谈谈合并排序算法

    转载请注明出处:http://blog.csdn.net/ruoyunliufeng/article/details/27570953      

           归并操作(merge),也叫归并算法,指的是将两个已经排序的序列合并成一个序列的操作。归并排序算法依赖归并操作。

    一.归并排序算法

    /***************************************************************
    *版权全部 (C)2014,公司名称。

    * *文件名:归并排序法 *内容摘要:无 *其他说明:无 *当前版本号:V1.0 *作 者:若云流风 *完毕日期:2014.5.29 ***************************************************************/ #include <stdio.h> #include<stdlib.h> #define N 8 void disp(void); int a[N]={2,1,4,3,6,5,8,7}; //将有二个有序数列a[first...mid]和a[mid...last]合并。 void mergearray(int a[], int first, int mid, int last, int temp[]) { int i = first, j = mid + 1; int m = mid, n = last; int k = 0; printf(" %d,%d,%d", i,m,n ); //打印first,mid,last while (i <= m && j <= n) { if (a[i] <= a[j]) temp[k++] = a[i++]; else temp[k++] = a[j++]; } while (i <= m) temp[k++] = a[i++]; while (j <= n) temp[k++] = a[j++]; for (i = 0; i < k; i++) a[first + i] = temp[i]; disp(); //打印每次合并完的数组 } /*递归的进行分解。然后合并*/ void mergesort(int a[], int first, int last, int temp[]) { if (first < last) { int mid = (first + last) / 2; mergesort(a, first, mid, temp); //左边有序 mergesort(a, mid + 1, last, temp); //右边有序 mergearray(a, first, mid, last, temp); //再将二个有序数列合并 } } //归并排序 bool MergeSort() { int *p; p = (int *)malloc(N * sizeof(int)); //为了分配暂时数组 if(p!=NULL) { mergesort(a, 0, N - 1, p); free(p); } else return false; } /*输出函数*/ void disp(void) { int i; // printf(" 排序结果: "); printf(" "); for(i=0;i<N;i++) { printf("%d", a[i]); printf(" "); } } int main(void) { MergeSort(); //归并排序 //disp(); return 0; }



    二.算法会说话

    1.输出结果


    2.整体过程分析


    3.数组合并分析

    如今以为第三个输出为例来说明数组是怎样合并的:



    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    【OpenCV学习】安防监控可疑走动报警
    【OpenCV学习】OpenMP并行化实例
    【OpenCV学习】cvConvert的使用
    【OpenCV学习】Fuzzy Logic模糊逻辑边缘提取
    C# 委托系列(一)将方法作为方法的参数
    关于dev的Gridview控件的行数据的颜色控制,根据不同的值设置不同颜色
    将gridcontrol导出到excel
    DataGridView中将某行设置为当前可见区域第一行
    如何获得窗体上控件相对于屏幕的位置?
    dev 控件 lookupedit 设置选项值
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4616800.html
Copyright © 2011-2022 走看看