• 快速排序


    快速排序

    时间复杂度 O(nlogn)

    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<iostream>
    using namespace std;
    
    const int MAX_A = 1000009;
    int a[MAX_A];
    void Q_sort(int l,int r)
    {   //把l,r分为两部分,左边比key小,右边比key大
        int l1=l,r1=r;
        while(l1<r1)
        {   //以左边第一个即a[l]为枢轴key
            while(l1<r1&&a[r1]>=a[l]) r1--;
            while(l1<r1&&a[l1]<=a[l]) l1++;
            if(l1!=r1)
                swap(a[l1],a[r1]);
            else
            {
                swap(a[l],a[l1]);
                Q_sort(l,l1-1);
                Q_sort(l1+1,r);
            }
        }
    }
    int main()
    {
        int n;
        while(~scanf("%d",&n))
        {
            for(int i=0; i<n; i++)
                scanf("%d",&a[i]);
    
            Q_sort(0,n-1);
    
            for(int i=0; i<n; i++)
                printf("%d ",a[i]);
           printf("
    ");
        }
    }
  • 相关阅读:
    ORACLE表空间管理维护
    oracle表分区详解
    Jquery
    B
    A
    E
    字符串排成字典序,字符串数组
    命令,快捷键,配置
    第一个java程序
    A
  • 原文地址:https://www.cnblogs.com/stffer/p/5047925.html
Copyright © 2020-2023  润新知