快速排序 O(nlogn)

快速排序 调用方法 quickSort(a,0,n); θ(nlogn)

void quickSort (int a[], int low, int high) {
    if (high <= low ) {
        return;
    }

    int start = low;   // 哨兵
    int end = high;  // 哨兵
    int temp = a[low];  // 存基准数,这里以最左边的数位基准
    int t;          // 用于交换的临时变量

    while (start < end) {
       // 要先从右往左找(因为基准点在最左边)
        while (start < end && a[end] >= temp)
            end--;
        while (start < end && a[start] <= temp)
            start++;
        if (start < end) {    // 哨兵没有相遇
            t = a[start];
            a[start] = a[end];
            a[end] = t;
        }
    }

// 哨兵相遇(start == end),将基准数temp归位
    a[low] = a[start];
    a[start] = temp;

    quickSort(a, low, start - 1);
    quickSort(a, start + 1, high);
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 9,114评论 0 15
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 10,610评论 0 52
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好...
    依依玖玥阅读 5,043评论 0 2
  • 概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的...
    Luc_阅读 6,824评论 0 35
  • 在大理学习的几天,可以感受到泡泡老师和易文老师对环境和环保的重视。 山上没有垃圾处理站,所有的垃圾要靠人工带下山处...
    tinaphoto阅读 3,251评论 0 1

友情链接更多精彩内容