• [排序算法] 归并排序


    归并排序

    【思想】

    ·简单地将原始序列划分为两个子序列

    ·分别对每个子序列递归排序

    ·最后将排好序的子序列合并为一个有序序列,即归并过程

    【特点】稳定

     空间代价:O(n)

     时间代价:O(nlogn)

    注:

    ·尽管归并排序最坏比较次数比快速排序少,但它需要更多地元素移动,因此它在实用中不一定比快速排序快

    ·一般二路归并算法需要另外一个存储空间来存储排好序的数组,空间复杂度为O(n)

    二路归并算法(需要另外存储空间)

     1 void Merge(int array[], int left, int middle, int right, int temp[])
     2 {
     3     int i = left,j = middle + 1,k = 0;
     4     while(i <= middle && j <= right)
     5     {
     6         if(array[i] > array[j])
     7         {
     8             temp[k ++] = array[j ++];
     9         }
    10         else
    11         {
    12             temp[k ++] = array[i ++];
    13         }
    14     }
    15     while(i <= middle)
    16     {
    17         temp[k ++] = array[i ++];
    18     }
    19     while(j <= right)
    20     {
    21         temp[k ++] = array[j ++];
    22     }
    23     for(int p = 0;p < k;p ++)
    24     {
    25         array[left + p] = temp[p];
    26     }
    27 }
    28 void MergeSort(int array[], int left, int right)
    29 {
    30     if (left < right)
    31     {
    32         int *temp = new int[right - left + 1];
    33         int middle = (left+right)/2;
    34         MergeSort(array, left, middle);
    35         MergeSort(array, middle + 1, right);
    36         Merge(array, left, middle, right,temp);
    37     }
    38 }
  • 相关阅读:
    burpsuite 不能抓取其他虚拟机环回地址
    Widows搭建sqli-labs
    Mysql内置函数
    MySQL用户创建于授权
    SQL注入
    XSS/CSRF/SSRF/XXE
    Cookie与Session的区别
    HACKTHEBOX邀请码
    kali安装jdk
    java -D
  • 原文地址:https://www.cnblogs.com/lca1826/p/6486288.html
Copyright © 2020-2023  润新知