Fork me on GitHub

排序算法


插入排序

  1. 直接插入排序
  2. 希尔排序

选择排序

  1. 简单选择排序
  2. 堆排序

交换排序

  1. 冒泡排序

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    void bubble_sort(int array[],int length)
    {
    int i,j,temp;
    int flag = 1; // 优化

    if(NULL == array || 0 == length)
    return;

    for(i = length-1 ; i >= 1 && flag; i--)
    {
    flag = 0;
    for(j = 0 ; j < i ; j++)
    {
    if(array[j] > array[j+1])
    {
    temp = array[j];
    array[j] = array[j+1];
    array[j+1] = temp;

    if(flag == 0)
    flag = 1;
    }
    }
    }
    }
  2. 快速排序

归并排序

基数排序

排序方法 最好情况 平均时间 最坏情况 辅助空间 稳定性
直接插入排序 O(n) O(n^2) O(n^2) O(1) ✔️
希尔排序 O() O(n^1.3) O() O(1) X
简单选择排序 O() O(n^2) O() O(1) X
堆排序 O(nlog2n O(nlog2n) O(nlog2n) O(1) X
冒泡排序 O(n) O(n^2) O(n^2) O(1) ✔️
快速排序 O(nlog2n) O(nlog2n) O(n^2) O(log2n) X
归并排序 O(nlog2n) O(nlog2n) O(nlog2n) O(n) ✔️
基数排序 O(d(n+rd)) O(d(n+rd)) O(d(n+rd)) O(rd) ✔️
坚持原创技术分享,您的支持将鼓励我继续创作
-------------本文结束感谢您的阅读-------------
0%