zoukankan      html  css  js  c++  java
  • 快排(递归排序模板)

    操作

    1.找到一个枢纽pivotkey ,对于一个一次操作让枢纽左边的值都小于等于pivotkey,枢纽右边的值都大于等于pivotkey

    2.一个排序后将该区间分成两部分继续递归排序,直至不符合l<R;

    注意对于默认枢纽为第一个元素,你也可以找到 low-high中人一个当作枢纽然后与第一个进行交换



    #include<stdio.h>
    #include<cstring>
    #include<string>
    #include<algorithm>
    #include<iostream>
    #include<cstdlib>
    #include<time.h>
    #define INF 0x3f3f3f3f
    #define N 10010
    using namespace std;
    template<typename T>
    void Oneqsort(T *arr,int low,int high)
    {
        if(low>=high)
         return;
        T pivotkey;
        int l,r;
        l=low;
        r=high;
        pivotkey=arr[l];
        while(l<r)
        {
            while(l<r&&(!(arr[r]<pivotkey)))r--;
            arr[l]=arr[r];
            while(l<r&&(!(pivotkey<arr[l]))) l++;
            arr[r]=arr[l];
        }
        arr[r]=pivotkey;
        Oneqsort(arr,low,r-1);
        Oneqsort(arr,r+1,high);
    }
    template <typename T>
    void QuickSort(T *arr,int la)//数组首地址 数组长度
    {
        Oneqsort(arr,0,la-1);
    }
    template <typename T>
    void Print(T* arr,int len)
    {
        for(int i=0;i<len;i++)
            cout<<arr[i]<<" ";
        cout<<endl;
    }
    int arr[N];
    int main()
    {
        int n;
        while(~scanf("%d",&n))
        {
             srand(time(NULL));
             for(int i=0;i<n;i++)
             {
                 arr[i]=rand()%1000;
             }
    
    
             Print(arr,n);
             printf("after......
    ");
             QuickSort(arr,n);
             Print(arr,n);
        }
    }
    

  • 相关阅读:
    POJ 3268 Silver Cow Party (Dijkstra)
    怒学三算法 POJ 2387 Til the Cows Come Home (Bellman_Ford || Dijkstra || SPFA)
    CF Amr and Music (贪心)
    CF Amr and Pins (数学)
    POJ 3253 Fence Repair (贪心)
    POJ 3069 Saruman's Army(贪心)
    POJ 3617 Best Cow Line (贪心)
    CF Anya and Ghosts (贪心)
    CF Fox And Names (拓扑排序)
    mysql8.0的新特性
  • 原文地址:https://www.cnblogs.com/dchnzlh/p/9780064.html
Copyright © 2011-2022 走看看