• C++之算法,快速排序


    快速排序

    思路:

    一个数组,随便选一个做基数,比它大的放他右边,比它小的放它左边,一轮下来就分成两组了,这两组再分别按刚才方法递归。

    具体操作:

    一个数组,第一个做基数取出来存在一个变量里,设置两个游标分别为数组开始和结束,

    开始循环:

    先按照游标从右到左依次选一个和基数比,该数比基数大就把结束游标向左移一位,比基数小的就把该数放到开始游标上去,此时再按照游标从左向右依次选一个数和基数比,该数比基数小就把开始游标向右移一位,比基数大就该数放到结束游标上去,再从新开始循环。

    直到两个游标相等,开始递归。

    int main ()
    {
        int data[] = {34,65,12,43,67,5,78,10,3,70} , k;
        int len=sizeof(data)/sizeof(int);
        quickSort(data , 0 , len-1);
        for (int i = 0; i < len; i++)
        {
            cout<<data[i]<<"
    ";
        }
    }
    
    void quickSort(int array[] , int begin , int end){
        if(begin<end){
            int l = begin , r = end , x = array[begin];
            while(l < r){
                while(l<r && array[r]>=x)
                    r--;
                if(l<r){
                    array[l] = array[r];
                    l++;
                }
                while(l<r && array[l]<x)
                    l++;
                if(l<r){
                    array[r] = array[l];
                    r--;
                }
            }
            array[l] = array[r] = x;
            quickSort(array , begin , r-1);
            quickSort(array , r+1 , end);
        }
    
    }
  • 相关阅读:
    3-4: 一元多项式的乘法与加法运算
    设计模式一装饰者模式
    设计模式一组合模式
    设计模式一命令模式
    设计模式一建造者模式
    设计模式一桥接模式
    设计模式一适配器模式
    设计模式一抽象工厂模式
    排序算法一二分排序
    排序算法一希尔排序
  • 原文地址:https://www.cnblogs.com/alazalazalaz/p/4076233.html
Copyright © 2020-2023  润新知