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

    题目:MIKU

    这道题实在太强了,各种排序轮番过,连STL都可以

    理论:百度百科

    但是,我还是要挂上真正的快速排序(我知道他有很多实现方式)

    /*
    快速排序是种很重要的算法
    
    
    即使我也不知道它哪里比归并强 
    */
    #include<iostream>
    using namespace std;
    int a[1000000];
    void quicks(int l,int r)
    {
        int i=l,j=r;//左右下标 
        int mid=a[(i+j)/2];//关键字!!注意不是下标
        //虽然说用下标也行
        //我习惯取中间,不过好像都行
        
        
         
        do{
            while(a[i]<mid) i++;//在左半边找比关键字小的下标 
            while(a[j]>mid) j--;//在右半边找比关键字小的 
            if(i<=j)//如果这俩撞上了,或相等 
            {
                swap(a[i],a[j]);//交换 
                i++;
                j--;//接着找 
            }
        }while(i<=j);//这个点,一本通上讲必须有小于等于,但是我亲测光小于也能过 
        if(i<r) quicks(i,r);//没有归为有序的部分接着找 
        if(j>l) quicks(l,j);// 我也解释不了更多了 
    }
    int main()
    {
        int n;
        cin>>n;
        for(int i=1;i<=n ;++i)
        {
            cin>>a[i];
        }
        quicks(1,n);
        for(int i=1;i<=n;++i)
        {
            cout<<a[i]<<" ";
        }
    }
    代码

    就是这样了。

    2019.3.9

    THAT'S ALL

  • 相关阅读:
    Oracle数据库基础
    2016-08-08二期模拟考试
    易买网-登入
    常量接口模式
    反射
    Hhibernate延迟加载
    URL和URI的区别和联系
    Socket编程
    ArrayList如何实现线程安全
    移位运算符
  • 原文地址:https://www.cnblogs.com/For-Miku/p/10502791.html
Copyright © 2011-2022 走看看