美文网首页
排序之一:快速排序

排序之一:快速排序

作者: 筱南独舞 | 来源:发表于2016-08-03 10:44 被阅读9次
  • 介绍
    快速排序又称分割交换排序法,是目前公认最佳的排序法。它的原理和冒泡排序法一样都是用交换的方式,不过它会现在数据中找到一个虚拟的中间值,把小于中间值的数据放在左边,而大于中间值的数据放在右边,再以同样的方式分别处理左右两边的数据,直到完成为止。
  • 演示
    代码如下:
private static void quickSort(int arr[], int low, int high) {
    int l = low, h = high, povit = arr[low], tmp;
    while (l < h) {
        while (l < h && arr[h] >= povit) h--;
        if (l < h) {
            tmp = arr[h];
            arr[h] = arr[l];
            arr[l] = tmp;
            l++;
        }
        while (l < h && arr[l] <= povit) l++;
        if (l < h) {
            tmp = arr[h];
            arr[h] = arr[l];
            arr[l] = tmp;
            h--;
        }
    }
    if (l > low) quickSort(arr, low, l - 1);
    if (h < high) quickSort(arr, l + 1, high);
}

运行效果:


快速排序运行效果.png
  • 分析
  1. 在最快及平均情况下,时间复杂度为O(nlog底数为2 的n)。最坏情况就是每次挑中的中间值不是最大就是最小,起时间复杂度为O(n²);
  2. 不是稳定排序法;
  3. 在最差的情况下,空间复杂度为O(n),而最佳情况为O(log以2为底的n);

其他排序:插入排序选择排序冒泡排序希尔排序基数排序

相关文章

  • 排序算法

    排序算法 排序是最基本的算法之一,常见的排序算法有插入排序、希尔排序、选择排序、冒泡排序、堆排序、归并排序及快速排...

  • GO语言实现 一 快速排序(一)

    快速排序被誉为20世纪科学和工程领域的十大算法之一。听名字就能了解,快速排序的特点,就是快 快速排序 快速排序采用...

  • 06《算法入门教程》快速排序

    1. 前言 本节内容是排序算法系列之一:快速排序,主要讲解了快速排序的主体思路,选取了一个待排序的数字列表对快速排...

  • 面试准备--排序

    堆排序 快速排序(simple) 快速排序(regular) 归并排序 Shell排序 插入排序 选择排序 冒泡排序

  • 排序之一:快速排序

    介绍快速排序又称分割交换排序法,是目前公认最佳的排序法。它的原理和冒泡排序法一样都是用交换的方式,不过它会现在数据...

  • 排序

    插入排序 选择排序 冒泡排序 归并排序 快速排序* 三路快速排序

  • 快速排序

    快速排序思想 快速排序号称20世纪最伟大的十大算法之一,也是nlogn级别的排序算法,它的思想是类似冒泡排序,是一...

  • Datawhale | 编程第6期 Test 3

    排序 1.实现归并排序、快速排序、插入排序、冒泡排序、选择排序、堆排序(选做) 归并排序 快速排序 插入排序 冒泡...

  • 七大排序算法之快速排序

    七大排序算法之快速排序 @(算法笔记)[排序算法, 快速排序, C++实现] [TOC] 快速排序的介绍: 快速排...

  • 图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序

    图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序 图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序

网友评论

      本文标题:排序之一:快速排序

      本文链接:https://www.haomeiwen.com/subject/biofsttx.html