• 快速排序


    Description

    有n个无序的整数,试把它们从小到大排序。

    要求:本题采用快速排序法来完成。

    Input

    输入共有2行,第一行是一个整数n ( 0 < n ≤ 100000 ),表示有n个整数。

    第二行是n个整数。

    Output

    输出每一次Partition之后的结果。规定每次选取"枢轴",都是选择当前区间的第一个元素。

    Sample Input

    14
    39 80 76 41 13 29 50 78 30 11 100 7 41 86

    Sample Output

    7 11 30 29 13 39 50 78 41 76 100 80 41 86
    7 11 30 29 13 39 50 78 41 76 100 80 41 86
    7 11 30 29 13 39 50 78 41 76 100 80 41 86
    7 11 13 29 30 39 50 78 41 76 100 80 41 86
    7 11 13 29 30 39 50 78 41 76 100 80 41 86
    7 11 13 29 30 39 41 41 50 76 100 80 78 86
    7 11 13 29 30 39 41 41 50 76 100 80 78 86
    7 11 13 29 30 39 41 41 50 76 100 80 78 86
    7 11 13 29 30 39 41 41 50 76 86 80 78 100
    7 11 13 29 30 39 41 41 50 76 78 80 86 100
    7 11 13 29 30 39 41 41 50 76 78 80 86 100

     
    #include<iostream>
    #include<stdio.h>
    using namespace std;
    int a[100002];
    int n;
    void qsort(int p,int r)
    {
        if(p>=r)
        {
            return ;
        }
        int x = a[p]; //基准数
        int i = p,j=r;
        while(i!=j)
        {
            while(a[j]>=x&&i<j)j--;a[i]=a[j];
            while(a[i]<=x&&i<j)i++;a[j]=a[i];
        }
        a[i]=x;
        for(int k=1; k<=n; k++)
        {
            cout << a[k] ;
            if(k==n)printf("
    ");
            else printf(" ");
        }
        qsort(p,i-1);
        qsort(i+1,r);
    
    }
    int main()
    {
        cin >> n;
        for(int i=1; i<=n; i++)
        {
            cin >> a[i];
        }
        qsort(1,n);
        return 0;
    }
  • 相关阅读:
    select.poll,epoll的区别与应用
    hibernate生成查询语句但查不到数据
    优化exp/imp导入导出速度大全
    完美逆向百度手机助手5.0底部菜单栏
    C#序列化和反序列化
    Centos6 编译安装局域网NTP服务器
    linux查看服务器型号
    fopen/fclose
    C文件操作之写入字符串到指定文件并在屏幕显示
    Centos6.x X64 飞信安装
  • 原文地址:https://www.cnblogs.com/dichuan/p/8157981.html
Copyright © 2020-2023  润新知