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

    题目描述

    利用快速排序算法将读入的N个数从小到大排序后输出。

    快速排序是信息学竞赛的必备算法之一。对于快速排序不是很了解的同学可以自行上网查询相关资料,掌握后独立完成。(C++选手请不要试图使用STL,虽然你可以使用sort一遍过,但是你并没有掌握快速排序算法的精髓。)

    代码:

    #include<iostream>
    using namespace std;
    //快速排序模板 
    int a[100010]; 
    void qsort(int left, int right){
        if(left < right){
            int i = left, j = right;
            int key = a[left];
            while(i < j){
                while(i<j && a[j]>=key)
                    j--;
                while(i<j && a[i]<=key)
                    i++;
                if(i<j){
                    int t = a[i];
                    a[i] = a[j];
                    a[j] = t;
                }
            }
            a[left] = a[i];
            a[i] = key;
            qsort(left, i-1);
            qsort(i+1, right);
        }
    }
    int main(){
        int i, n;
        cin>>n;
        for(i = 0; i < n; i++)
            cin>>a[i];
        qsort(0, n-1);
        for(i = 0; i < n; i++)
            cout<<a[i]<<" ";
        return 0;
    } 

    备注:

    这道题冠冕堂皇地说考验我们写快速排序,写完标准的快排根本过不了,最后还是用sort过的。。。贴在这里的是我认真地写了一遍的快排。我发现快排有两种写法,这里是我习惯的一种,因为之前看过这种写法的图解。。注意什么时候要取等。

  • 相关阅读:
    修改ESMAP中的LOGO
    AppCompatActivity隐藏顶部任务栏
    Android原生开发,view标签导致RecyleView Adapter 中报错的奇葩问题
    用UPUPW做服务器,通过thinkphp5完美搭建APP后台
    hhh
    Redis 学习
    无刷新文件上传
    mongoDB 学习
    MySQL读写分离-架构
    Mysql 通用二进制包安装
  • 原文地址:https://www.cnblogs.com/fangziyuan/p/5849442.html
Copyright © 2011-2022 走看看