zoukankan      html  css  js  c++  java
  • 归并排序

    归并排序的实现.时间复杂度是O(nlgn),空间复杂度是O(n) + O(lgn).

     1 #include <iostream>
     2 
     3 using namespace std;
     4 
     5 void merge_array(int *, int, int, int);
     6 void merge_sort(int *, int, int);
     7 
     8 int main(void)
     9 {
    10 
    11     int A[6] = {5,1,2,6,9,3};
    12     merge_sort(A, 0, 5);
    13 
    14     for (int i=0; i<6; ++i)
    15     {
    16         cout << A[i] << " ";
    17     }
    18 
    19     cout << endl;
    20     return 0;
    21 }
    22 
    23 void merge_sort(int A[], int p, int r)
    24 {
    25     if (p < r)
    26     {
    27         int mid = (p + r) / 2;
    28         merge_sort(A, p, mid);
    29         merge_sort(A, mid+1, r);
    30         merge_array(A, p, mid, r);
    31     }
    32 }
    33 
    34 void merge_array(int A[], int p, int mid, int r)
    35 {
    36     int *array1 = NULL;
    37     int *array2 = NULL;
    38     
    39     int array1_len = 0;
    40     int array2_len = 0;
    41     
    42     int i, j;
    43 
    44     array1_len = mid - p + 1;
    45     array2_len = r - mid;
    46 
    47     array1 = new int[array1_len];
    48     array2 = new int[array2_len];
    49     
    50     for (i=0; i<array1_len; ++i)
    51     {
    52         array1[i] = A[i+p];
    53     }
    54 
    55     for (j=0; j<array2_len; ++j)
    56     {
    57         array2[j] = A[mid+j+1];    
    58     }
    59 
    60     for (i=0, j=0; i<array1_len && j<array2_len;)
    61     {
    62         if (array1[i] < array2[j])
    63         {
    64             A[p++] = array1[i++];
    65         }
    66         else
    67         {
    68             A[p++] = array2[j++];
    69         }
    70     }
    71 
    72     while(i < array1_len)
    73     {
    74         A[p++] = array1[i++];
    75     }
    76 
    77     while(j < array2_len)
    78     {
    79         A[p++] = array2[j++];
    80     }
    81     
    82     delete [] array1;
    83     delete [] array2;
    84 }
  • 相关阅读:
    js正则表达式大全(2)
    Magic Trackpad 2 on win10 x64
    Google 日历短信通知没有了
    Ueditor 1.4.3 jsp utf-8版Bug修复
    [转]eclipse中build workspace的相关优化
    Hello,
    EpCloud开发日志
    为服务创建安装程序
    winform 通过WCF上传Dataset数据
    opcrcw.da.dll 和.net 4.0
  • 原文地址:https://www.cnblogs.com/yyxayz/p/4137439.html
Copyright © 2011-2022 走看看