我的快排代码

快排是一个重要的算法,思想是冒泡排序的改进,我理解的是不停的找到一个数的准确位置,找到所有比他大数和比他小的数。然后嵌套进行这个操作,直到排序完成。

void Quick_sort(int left,int right,int arr[]){
    //left代表左指针位置,right代表右指针位置
    if(left>=right)return;//当左右指针移到同一位置时停止移动,为嵌套结束准备
    int i,j,base,temp;//base储存最开始的基点,temp用于交换元素
    i=left,j=right;
    base=arr[left];
    while(i<j){//不断进行左移和右移操作直到重合
        while(arr[j]>=base && i<j)j--;//以左值为基点,则先从右边往左找比基点小的值
        while(arr[i]<=base && i<j)i++;//再从左往右找比基点大的值
        if(i<j){//交换找到的两个值的位置
            temp=arr[i];
            arr[i]=arr[j];
            arr[j]=temp;
        } 
    }
    arr[left]=arr[i];//最后把基点移到重合位置
    arr[i]=base;//更新基点
    Quick_sort(left,i-1,arr);//嵌套操作
    Quick_sort(i+1,right,arr);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值