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
    */

          

      

  • 相关阅读:
    mybatis 缓存
    mybatis 级联
    mybatis 传递多个参数
    mybatis 枚举typeHandler
    mybatis 自定义typeHandler
    mybatis typeHandler类型转换器
    Fastjson 序列化与反序列化
    单独使用MyBatis的简单示例
    dubbo+zookeeper+springboot简单示例
    intellij 插件的使用
  • 原文地址:https://www.cnblogs.com/liboyan/p/4899149.html
Copyright © 2011-2022 走看看