• 快速排序(quickSort)


    快速排序属于高等排序,平均时间复杂度为O(n*logn)。

    快速排序是基于分治法的算法。

    首先,以整个数组为对象执行quickSort。

    quickSort的流程如下:

    1.通过分割将对象数组分割为前后两个局部数组(前半部分数组均小于基准,后半部分数组元素均大于基准)。
    2.对前部分的局部数组执行quickSort。
    3.对后半部分的局部数组执行quickSort。

    本代码选择数组中的最后一个元素为基准进行分割。

    #include<iostream>
    #include<algorithm>
    using namespace std;
    const int maxn=1e5+5;
    int partition(int a[],int p,int r)
    {
        int x=a[r];
        int i=p-1;
        for(int j=p;j<r;j++)
            if(a[j]<=x)
                swap(a[++i],a[j]);
        swap(a[i+1],a[r]);
        return i+1;
    }
    void quickSort(int a[],int p,int r)
    {
        if(p<r)
        {
            int q=partition(a,p,r);
            quickSort(a,p,q-1);
            quickSort(a,q+1,r);
        }
    }
    int main()
    {
        int n;
        cin>>n;
        int a[maxn];
        for(int i=0;i<n;i++)
            cin>>a[i];
        quickSort(a,0,n-1);
        for(int i=0;i<n;i++)
        {
            if(i)
                cout<<" ";
            cout<<a[i];
        }
        cout<<endl;
        return 0;
    }
    
  • 相关阅读:
    PHP“Cannot use object of type stdClass as array”
    JS简单循环遍历json数组的方法
    省市区、民族下拉列表框
    java 代码获取视频时长
    CentOs 相关
    曾经遇过的sql问题
    在线分享代码
    ssm 数据库连接池配置
    代码片段
    java 常见问题
  • 原文地址:https://www.cnblogs.com/orion7/p/8253165.html
Copyright © 2020-2023  润新知