排序算法——快速排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序算法——快速排序相关的知识,希望对你有一定的参考价值。

原理

采用分治的思想。主要分为三步:

第一步选择一个基数。

第二步将排序数组在分区的过程,将比该基数小的放在左边,比该基数大的放在右边。

第三步,对左右分区执行同样的操作直到剩下一个数字。

分析

在最坏的情况下,也就是数据的划分不平衡,一部分是n-1个数字,另一部分没有数据,并且每次划分都是这种情况,则其时间复杂度就是On2);在一般情况(包括最好),其时间复杂度为Onlog2n);由于以下实现过程在原数组的基础上对数组进行排序,故其空间复杂度是O(1)。

C语言实现

void qsort(int *arr, int start, int end)
{
    int high = end, low = start;
    int value = arr[start];
 
    if(NULL != arr || start < end){
        while(low < high){
            while(low < high && arr[high] > value){
                 high--;
            }
            if(low < high){
                arr[low] = arr[high];
                low++;
            }
            while(low < high && arr[low] < value){
                low++;
            }
            if(low < high){
                arr[high] = arr[low];
                high--;
            }
        }
        arr[low] = value;
        qsort(arr, start, low - 1);
        qsort(arr, low + 1, end);
    }
}



本文出自 “11219885” 博客,请务必保留此出处http://11229885.blog.51cto.com/11219885/1751524

以上是关于排序算法——快速排序的主要内容,如果未能解决你的问题,请参考以下文章

一行Python代码搞定快速排序算法

交换排序(冒泡排序快速排序的算法思想及代码实现)

排序算法 | 快速排序(含C++/Python代码实现)

[leetcode]排序算法(冒泡排序,选择排序,插入排序,快速排序,计数排序)

十大经典排序算法总结(快速排序)

快速排序算法详解及代码实现