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

         快速排序就是选定一个参照物,然后比这个参照物小的放它左边,比它大的放右边,然后分别对左边和右边重复以上操作。

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    int quick(int* a,int l,int r)
    {
       int x = a[l];
       int j = l;
       while(l<r)
       {
           for(;r>=l;--r)
                if(x >= a[r]) break;
           swap(a[j],a[r]);      //把x交换进去,是为了避免下标超界,这样就不会越界了,
           j = r;
           for(;l<=r;++l)
                if(x <= a[l]) break;
           swap(a[j],a[l]);
           j = l;
       }
       //a[j] = x;
       return j;
    }
    void qSort(int* a,int l,int r)
    {
        if(l>=r) return;
        int x = quick(a,l,r);
        qSort(a,l,x-1);
        qSort(a,x+1,r);
    }
    int main()
    {
        int a[] = {9,10,2,6,8,1,5,4,3,7};
        int n = sizeof(a)/sizeof(int);
        qSort(a,0,n-1);
        for(int i=0;i<n;++i)
            printf("%d ",a[i]);
        printf("
    ");
        return 0;
    }
  • 相关阅读:
    面试相关
    luffy--01
    RESTful --01
    vue2 -- axios
    Vue --1
    crm--分页
    【SQL】UNION
    sql-新发现
    GROUPING
    记录的排列顺序——两个ORDER BY
  • 原文地址:https://www.cnblogs.com/jlyg/p/10262200.html
Copyright © 2011-2022 走看看