快速排序(递归)

本文详细介绍了快速排序算法的基本原理,通过图解和代码示例展示了如何选取分界点,并使用递归方式将数组分为两部分进行排序的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

快速排序的原理很简单,就是找一个分界点,把比它大的放到一边,把比它小的放到另一边。下面看一下图和代码





代码实现

void Qsort(int a[],int low,int high)
{
   if(low>=high)
     return;
   
   int first=low;//副本做游标
   int last=high;
   int key=a[first];//确定第一个为分界点
   
   while(first<last)//游标相碰,退出循环
   {
      while(first<last&&a[last]>=key)//从后向前扫到第一个比分界点小的值
        last--;
     a[first]=a[last];//用找到的Last直接覆盖First,之前的值已有保存
     
      while(first<last&&a[first]<=key)//从前向后找到第一个比分界点大的值
        first++;
     a[last]=a[first];//Frist直接覆盖Last,之前的值已有保存
   }
   
   a[first]=key;//界点位置已经确定
   Qsort(a,low,first-1);//递归两边排序
   Qsort(a,last+1,high);
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值