zoukankan      html  css  js  c++  java
  • 快速排序算法(C)

           sort快排函数的基本版,效率n*logn,快排的完全版就是在递归之中夹杂对序列的预判断,最优的选择排序方法,快速排序算法只是其中之一。

           简单的说明一下快速排序的思想,对于一个数列,首先选择一个基数(x),进行第一次排序,把比x 小的放在x左边,大的放右边(默认从小到大)。

           例如 : 8 4 5 7 6 9 2 1 3 0,  选择基数8  那么第一次排序的结果是这样的: 0 4 5 7 6 3 2 1 8 9

           之后捏,分治一下,以基数为界,左边排一遍,右边排一遍,再用得到的基数为界再排,排到没数为止。

          

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    
    using namespace std;
    
    int integer[100000];
    
    int qsort(int s,int e)
    {
        int i=s,j=e;
        int x=integer[i]; //  基准数
        int s_or_b=1;  //  找小数还是找大数的标志
        while(i!=j)
        {
            if(s_or_b&1)   //  s_or_b 为奇数  往X左边放小或等于的数
            {
                if(x >= integer[j])
                {
                    integer[i++]=integer[j];
                    s_or_b++;
                }
                else j--;
            }
            else
            {
                if(x <= integer[i])
                {
                    integer[j--]=integer[i];
                    s_or_b++;
                }
                else i++;
            }
        }
        integer[i]=x;
        return i;
    }
    void qsort_f(int s,int e)
    {
        if(e-s<=1) return;
        int pos=qsort(s,e);
        qsort_f(s,pos-1);
        qsort_f(pos+1,e);
    }
    int main()
    {
        int n;
        cin>>n;
        while(n--)
        {
            int t;
            cin>>t;
            for(int i=0;i<t;i++)
            {
                cin>>integer[i];
            }
            qsort_f(0,t-1);
            for(int j=0;j<t;j++)
            {
                cout<<integer[j]<<" ";
            }
            cout<<endl;
        }
        return 0;
    }
    
    /*
    10
    8 4 5 7 6 9 2 1 3 0
    */

          

      

  • 相关阅读:
    2.8 Classes of Restricted Estimators
    navicat远程登录windows服务器
    面试题
    【南阳OJ分类之语言入门】80题题目+AC代码汇总
    基于‘BOSS直聘招聘信息’分析企业到底需要什么样的PHPer
    数据开源
    Pyhton爬虫实战
    Python爬虫框架Scrapy实战
    做网站用UTF-8编码还是GB2312编码?
    【南阳OJ分类之大数问题】题目+AC代码汇总
  • 原文地址:https://www.cnblogs.com/liboyan/p/4899149.html
Copyright © 2011-2022 走看看