御坂坂的c++学习之路(6)

依然是递归,此次是快排算法

#include<bits/stdc++.h>
using namespace std;
void quick_sort(int arr[],int left,int right)
{
   if(left < right)
   {
       int i = left,j = right,poi = arr[left];//以arr[]={0,1,2,3,4,5,6,7,8,9}为例,i自然为0,j则为9,poi = arr[0] = 0;
       while(i < j)//当数组左边界小于右边界的时候
       {
           while(arr[j] <= poi&&i < j)//从右边循环判断找到比poi,也就是arr[left]大的值
            j--;
            if(i < j)//将比poi大的值替换掉arr[left],但是poi的值并没有发生变化
                arr[i++] = arr[j];
           while(arr[i] >= poi&&i < j)//从左边循环判断找出比poi小的值
            i++;
            if(i < j)
                arr[j--] = arr[i];//将这个值替换掉前面替换掉arr[i]的值
       }
       arr[i] = poi;//剩下一个值,将poi的值给它
       quick_sort(arr,left,i-1);//递归排序左边部分
       quick_sort(arr,i+1,right);//递归排序右边部分。

   }
};
int main()
{
    int arr[10];
    for(int i = 0;i < 10;i++)
        cin>>arr[i];
    quick_sort(arr,0,9);
     for(int i = 0;i < 10;i++)
       cout<<arr[i]<<"\t";
    cout<<endl;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值