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

    1.归并排序

     1 void merge(int *arr, int start, int mid, int end)
     2 {
     3     int i = start;
     4     int j = mid + 1;
     5     int k = 0;
     6     int len = end - start + 1;
     7     int *temp = new int[len];
     8     
     9     while(i <= mid && j <= end)
    10     {
    11         if(arr[i] < arr[j])
    12         {
    13             temp[k] = arr[i];
    14             k++;
    15             i++;
    16         }
    17         else
    18         {
    19             temp[k] = arr[j];
    20             k++;
    21             j++;
    22         }
    23     }
    24     
    25     while(i <= mid)
    26     {
    27         temp[k] = arr[i];
    28         k++;
    29         i++;
    30     }
    31     
    32     while(j <= end)
    33     {
    34         temp[k] = arr[j];
    35         k++;
    36         j++;
    37     }
    38     
    39     for(k = 0; k < len; k++)
    40     {
    41         arr[start + k] = temp[k];
    42     }
    43 }
    44 
    45 void _mergeSort(int *arr, int start, int end)
    46 {
    47     if(start == end)
    48     {
    49         return;
    50     }
    51     
    52     int mid = (start + end ) / 2;
    53     _mergeSort(arr, start, mid);
    54     _mergeSort(arr, mid + 1, end);
    55     merge(arr, start, mid, end);
    56 }
    57 
    58 void mergeSort(int *arr, int n)
    59 {
    60     _mergeSort(arr, 0, n - 1);
    61 }
  • 相关阅读:
    7.ps相关选项
    6.ps的大U和小u区别
    5.进程优先级
    4.状态间的六种转换情况
    3.进程的不同状态
    2.进程与程序的关系
    1.进程概念
    不换行
    for引用变量
    脚本进阶
  • 原文地址:https://www.cnblogs.com/chusiyong/p/11320096.html
Copyright © 2011-2022 走看看