zoukankan      html  css  js  c++  java
  • 快速排序

      void quicksort(int x,int y)
        {
            int i=x,j=y;
            int k=a[x];
            if(i>=j)
                return;
            while(i<j)
            {
                while(i<j&&a[j]>k)
                    j--;
                if(i<j)
                {
                    a[i]=a[j];
                    i++;
                }
                while(i<j&&a[i]<=k)
                    i++;
                if(i<j)
                {
                    a[j]=a[i];
                    j--;
                }
            }
            a[i]=k;
            quicksort(x,i-1);
            quicksort(i+1,y);
        }

    以上就是快排模板,当然估计没几个人可以认真看下去。

    想看以上算法具体原理可以戳这个链接<<

    然后开始讲sort怎么用= =

    需要头文件

    #include<algorithm>

    如果只有两个参数的用法是

    sort(begin,end)

    begin是数组开始的地址,end是结束的地址。

    比如你要把a[1]到a[100]从小到大排序(sort默认是升序即从小到大排序)

    则可以这样用

    sort(a+1,a+100

    这个语句过后a数组里从1到100的数就是从小到大排列的了

    如果你要从大到小排序或者各种奇葩的排序方式的话需要写一个比较函数

    bool compare(int a,int b)
    {
          return a>b;   
    }

    (布尔函数的写法可以参考我的另一篇博客

    然后

    sort(a+1,a+100,compare)

    这个语句之后a里的数就是从大到小排列的了

    用中文总结一下sort的用法就是

    sort(数组开始的地址,数组结束的地址,排序规则)

    >>小朋友快点这里试一下吧<<

     话说我干嘛要掌握快排精髓,写出来也不一定有sort快还浪费时间。

  • 相关阅读:
    【设计模式】——抽象工厂模式
    【设计模式】——观察者模式
    Candy
    Two Sum
    Interleaving String
    Longest Valid Parentheses
    【设计模式】——建造者模式
    【设计模式】——外观模式
    Simplify Path
    Word Search
  • 原文地址:https://www.cnblogs.com/lizinuo/p/9476682.html
Copyright © 2011-2022 走看看