当前位置 博文首页 > 爱新觉罗?炒饭的博客:快速排序(分治+递归)

    爱新觉罗?炒饭的博客:快速排序(分治+递归)

    作者:[db:作者] 时间:2021-07-07 15:34

    #include <iostream>
    #include <string.h>
    using namespace std;
    int Partition(int a[],int left,int right)
    {
        int key=a[left];
        while(left<right)
        {
            while(left<right&&a[right]>=key)    //从最右边寻找,当找到比key小的值时退出循环
                right--;
            if(left<right)
                a[left]=a[right];
            while(left<right&&a[left]<=key)    //从最左边开始寻找,当找到比key大的值退出循环
                left++;
            if(left<right)
                a[right]=a[left];
        }
        a[left]=key;
        return left;
    }
    void Quicksort(int a[],int left,int right)
    {
        if(left<right)
        {
            int q=Partition(a,left,right);
            Quicksort(a,left,q-1);
            Quicksort(a,q+1,right);
        }
    }
    int main()
    {
       int a[100];
       int n;
       cin>>n;
       for(int i=0;i<n;i++)
           cin>>a[i]; 
       Quicksort(a,0,n-1);
       for(int i=0;i<n;i++)
          cout<<a[i]<<" ";
       return 0;
    }
    
    
    cs