• 归并排序的迭代表示/自底向上归并


     1 #include <iostream>
     2 #include <stdlib.h>
     3 
     4 using namespace std;
     5 #define N 100
     6 
     7 //合并序列中的s:m-1和m:e两个子序列
     8 void merge(int array[], int s, int m, int e) {
     9     int ta[N], i, j, k = 0;    
    10     i = s;
    11     j = m;
    12     while (i < m && j <= e) {
    13         if (array[i] < array[j]) {
    14             ta[k++] = array[i++];
    15         } else {
    16             ta[k++] = array[j++];
    17         }
    18     }
    19     while (i < m) {
    20         ta[k++] = array[i++];
    21     } 
    22     while (j <= e) {
    23         ta[k++] = array[j++];
    24     }
    25     i = s;
    26     k = 0;
    27     while (i <= e) {
    28         array[i++] = ta[k++];
    29     }
    30 }
    31 
    32 //自底向上归并
    33 void buttomUpSort(int array[], int length) {
    34     int i = 1, s, m, e, t;
    35     while ((length / i) >= 1) {    //依次从2, 4, 8......至序列被分成两部分向上归并
    36         s = 0;
    37         while (1) {
    38             m = s + i;
    39             if (m >= length)//若此段序列孤立(及原序列被划分成奇数个部分,最后一部分不做合并,进入到下一次合并)
    40                 break;
    41             else {
    42                 e = ((t = m + i - 1) < length)?t:length - 1;//最后一段序列的截止位为length-1
    43                 merge(array, s, m, e);
    44             }
    45             s += i*2;
    46         }
    47         i *= 2;
    48     }
    49 }
    50 
    51 int main(int args, char **argv) {
    52     int array[N];
    53     for (int i = 0; i < N; ++i) {
    54         array[i] = rand() % 100;
    55     }
    56     for (int i = 0; i < N; i++) {
    57         cout << '\t' << array[i];
    58     }
    59     cout << endl;
    60     buttomUpSort(array, N);
    61     for (int i = 0; i < N; i++) {
    62         cout << '\t' << array[i];
    63     }
    64     return 0;
    65 }
  • 相关阅读:
    財智V6.0(完美破解序列号特别版)
    垂死挣扎还是涅槃重生 -- Delphi XE5 公布会归来感想
    HDU1006
    HDU 1385 Minimum Transport Cost 最短路径题解
    fast-json.jar的用法
    curl命令具体解释
    mysql很全的和完整的总结
    MongoDB入门简单介绍
    Tuxedo入门学习
    BP神经网络基本原理
  • 原文地址:https://www.cnblogs.com/Sunlnx/p/3402518.html
Copyright © 2020-2023  润新知