快速排序算法

Posted 汜慕魂落

tags:

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

记录下来,有空就手写一遍。

思路:

  1. 选取子数组left指针为基准(standard)
  2. right指针从后向前移动,找到第一个比基准小的值。并将该值赋给left指针。
  3. left指针从前往后移动,找到第一个比基准大的值,并将该值赋给right指针。
  4. 把基准的值赋给left指针。
  5. 最终呢,可以说整个过程涉及到三个值,比基准小的值,基准值,比基准大的值。此时left指针指向的是基准值,也就是三个值中间的那个。left指针将作为下一次区分子数组的关键点。

代码:

#include <iostream>
using namespace std;
int A[]= {3,19,1,21,89,34,78,12,2,68};
int get_pivotIndex(int left,int right)
{
    int standard=A[left];
    while(left<right)
    {
        while(left<right&&standard<=A[right])right--;
        A[left]=A[right];
        while(left<right&&standard>=A[left])left++;
        A[right]=A[left];
    }
    A[left]=standard;
    return left;
}
void quick_sort(int left,int right){
    if(left>=right)return;
    int pivot=get_pivotIndex(left,right);
    quick_sort(left,pivot-1);
    quick_sort(pivot+1,right);
}
int main()
{
    int left=0;
    int right=sizeof(A)/sizeof(int)-1;
    quick_sort(left,right);
    for(int i=0;i<=right;i++){
        cout<<A[i]<<",";
    }
    return 0;
}

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

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

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

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

快速排序/快速选择算法

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

排序算法——快速排序的图解代码实现以及时间复杂度分析