pfwvan666

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

11//定义数列,左位,右位
13空表返回空值
15定义左下标右下标
16定义中心轴
17中心轴初始位置是在数列最左边
19最右边值大于中心轴的值时
21最右边的下标往左移一位
25最右边的值放到最左边的下标指的那个位置上去
反之亦是
所以比中心轴的值大的值不是随便扔到左边的,是扔到左边靠近右边的下标的位置
35左右下标重合
37中心轴的值放到左下标去(右也行)
40中心轴的左边再重复前面的步骤迭代排序,右边也是,但是为了左右起点不重复所以一个+1一个-1

 

嘻嘻特别严谨的缩进格式哇

#include<iostream>
using namespace std;

void  Quicksort(int a[],int L,int R)
{
    if(L>=R)
        return ;
        
    int left=L,right =R;
    int privot = a[left];
    
    while(left<right)
    {
        while (left<right&&a[right]>=privot)
        {
            right--;
        }
        if (left<right)
        {
            a[left]=a[right];
        }
        
        while(left<right&&a[left]<=privot)
        {
            left++;
        }
        if(left<right)
        {
            a[right]=a[left];    
        }
        
        if(left>=right)
        {
            a[left]=privot;
        }
    }    
    Quicksort(a,L,right-1);
    Quicksort(a,right+1,R);

}


int main()
{
    int n;
    cin>>n;
    int a[100001];
    
    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;
}

posted on 2022-10-18 13:17  澎湖湾  阅读(27)  评论(0)    收藏  举报