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

    顾名思义,最快的排序,相当于sort

    直接上代码:

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<cstring>
    #include<cstdlib>
    #include<algorithm>
    using namespace std;
    void qsort(int,int);
    int a[1000001];
    int ans;
    int main()
    {
    int n,i;
    cin >> n;
    for(i = 1;i <= n;i ++)
    cin >> a[i];
    qsort(1,n);
    for(i = 1;i <= n;i ++)
    cout << a[i] << " ";
    cout << endl;
    return 0;
    }
    void qsort(int l,int r)//左边和右边
    {
    int i,j,mid,p;
    i = l;j = r;
    mid = a[(l + r) / 2];//定义中间参考的数
    while(i <= j)
    {
    while(a[i] < mid) i ++;//如果前面的都比中间的小就不用交换
    while(a[j] > mid) j --;//反之,后面的比中间的大也不用交换(从小到大排序)
    if(i <= j)//如果找到两个要交换的数并且符合条件大在前小在后,那么交换,并且找下一个
    {
    swap(a[i],a[j]);
    i ++;j --;
    }
    }
    if(l < j) qsort(1,j);//如果找完之后还可以接着找,那么继续
    if(i < r) qsort(i,r);
    }

    模板

  • 相关阅读:
    观光公交
    luogu 4779 【模板】
    最小生成树(luogu 3366)
    计算系数
    更新区间,求单点—— luogu 3368
    HDU
    HDU
    HDU
    HDU
    BFS
  • 原文地址:https://www.cnblogs.com/57xmz/p/12595634.html
Copyright © 2011-2022 走看看