Quick Sort

简介: Quick Sort “【5月更文挑战第18天】”

快速排序(Quick Sort)是一种高效的排序算法,由英国计算机科学家托尼·霍尔(Tony Hoare)在1960年提出。它采用分治法(Divide and Conquer)的策略来把一个序列分为较小和较大的两个子序列,然后递归地排序两个子序列。

快速排序的基本步骤如下:

  1. 选择基准值(Pivot):从数列中挑出一个元素,称为“基准”(pivot),这个选择可以是任意的,常见的选择方法包括取首元素、末元素、中元素或随机元素。

  2. 分区操作(Partitioning):重新排列数列,所有比基准值小的元素摆放在基准前面,所有比基准值大的元素摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。

  3. 递归排序:递归地(Recursive)把小于基准值的子数列和大于基准值的子数列排序。

  4. 结束条件:当数列的大小减小到不需要排序时(例如,只有一个或零个元素),递归结束。

以下是快速排序算法的伪代码示例:

procedure quickSort(A, lo, hi)
    if lo < hi then
        p := partition(A, lo, hi)
        quickSort(A, lo, p - 1)  // Before p
        quickSort(A, p + 1, hi)   // After p
    end if
end procedure

procedure partition(A, lo, hi)
    pivot := A[lo]
    i := lo - 1
    j := hi + 1
    loop
        do
            i := i + 1
        while A[i] < pivot
        do
            j := j - 1
        while A[j] > pivot
        if i >= j then
            return j // For equal pivot elements
        end if
        swap A[i] with A[j]
    end loop
end procedure

快速排序的性能通常比其他 O(n log n) 算法更好,因为它的内部循环(inner loop)可以在大多数的架构上很有效率地被实现出来。快速排序的平均时间复杂度为 O(n log n),但在最坏的情况下会退化到 O(n^2),尤其是当输入数组已经接近排序好的状态时。为了避免这种最坏情况的发生,通常会使用一些策略来选择基准值,例如随机选择基准值,或

目录
相关文章
|
7月前
3秒的你对战“它”有没有胜算——quicksort
3秒的你对战“它”有没有胜算——quicksort
46 0
|
搜索推荐
排序算法:QuickSort
排序算法:QuickSort
|
4月前
|
搜索推荐 算法 Java
现有一个接口DataOperation定义了排序方法sort(int[])和查找方法search(int[],int),已知类QuickSort的quickSort(int[])方法实现了快速排序算法
该博客文章通过UML类图和Java源码示例,展示了如何使用适配器模式将QuickSort类和BinarySearch类的排序和查找功能适配到DataOperation接口中,实现算法的解耦和复用。
54 1
现有一个接口DataOperation定义了排序方法sort(int[])和查找方法search(int[],int),已知类QuickSort的quickSort(int[])方法实现了快速排序算法
|
算法 编译器 C语言
qsort函数 - (Quick Sort)【快速排序的使用方法】
qsort函数 - (Quick Sort)【快速排序的使用方法】
|
存储 搜索推荐
十大排序之Quick Sort 快速排序
十大排序之Quick Sort 快速排序
|
搜索推荐 C语言
快排函数 -- qsort函数(Quick Sort)
快排函数 -- qsort函数(Quick Sort)
133 0
|
机器学习/深度学习 搜索推荐 算法
图解快排——快速排序算法(quick sort)
图解快排——快速排序算法(quick sort)
239 0
图解快排——快速排序算法(quick sort)
|
算法 Java
经典算法之快速排序(QuickSort)
经典算法之快速排序(QuickSort)
210 0
经典算法之快速排序(QuickSort)
|
搜索推荐 C语言
Quicksort快速排序
快速排序思想
88 0
Quicksort快速排序
|
搜索推荐 算法 Java