• [数据结构]归并排序


    归并排序

    点击打开链接

    [cpp] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. //将有二个有序数列a[first...mid]和a[mid...last]合并。     
    2. void mergearray(int a[], int first, int mid, int last, int temp[])    
    3. {    
    4.     int i = first, j = mid + 1;    
    5.     int m = mid,   n = last;    
    6.     int k = 0;    
    7.         
    8.     while (i <= m && j <= n)    
    9.     {    
    10.         if (a[i] <= a[j])    
    11.             temp[k++] = a[i++];    
    12.         else    
    13.             temp[k++] = a[j++];    
    14.     }    
    15.         
    16.     while (i <= m)    
    17.         temp[k++] = a[i++];    
    18.         
    19.     while (j <= n)    
    20.         temp[k++] = a[j++];    
    21.         
    22.     for (i = 0; i < k; i++)    
    23.         a[first + i] = temp[i];    
    24. }    
    25. void mergesort(int a[], int first, int last, int temp[])    
    26. {    
    27.     if (first < last)    
    28.     {    
    29.         int mid = (first + last) / 2;    
    30.         mergesort(a, first, mid, temp);    //左边有序     
    31.         mergesort(a, mid + 1, last, temp); //右边有序     
    32.         mergearray(a, first, mid, last, temp); //再将二个有序数列合并     
    33.     }    
    34. }    
    35.     
    36. bool MergeSort(int a[], int n)    
    37. {    
    38.     int *p = new int[n];    
    39.     if (p == NULL)    
    40.         return false;    
    41.     mergesort(a, 0, n - 1, p);    
    42.     delete[] p;    
    43.     return true;    
    44. }    
  • 相关阅读:
    __autoload函数
    错误处理try catch
    PHP面向对象基础实例
    类的继承关系实例
    YII重点文件
    //计算今年月度利息和
    cookie保存分页参数
    win64(win8)的python拓展包安装经验总结
    matcom安装时无法寻找到matlab.exe的解决办法
    《人人都是产品经理》阅读笔记一
  • 原文地址:https://www.cnblogs.com/zhiliao112/p/4232221.html
Copyright © 2020-2023  润新知