• 快速排序算法


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

    思路:

    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;
    }
    
    
  • 相关阅读:
    04邻接表深度和广度遍历DFS_BFS
    03邻接矩阵的深度和广度遍历的C语言实现
    02邻接表创建的C语言实现
    01邻接矩阵的创建C语言实现
    GUN的相关使用
    JAVA学习笔记
    排序的C语言实现
    线索二叉树的C语言实现
    maven配置logback
    多线程概念
  • 原文地址:https://www.cnblogs.com/simuhunluo/p/8618559.html
Copyright © 2020-2023  润新知