首页 > 其他分享 >快速排序的思路及核心函数

快速排序的思路及核心函数

时间:2024-07-06 23:26:25浏览次数:13  
标签:函数 int 边界值 数组 思路 排序 任意 ###

Quick_Sort

### 思想

  1. 选取数组段内的任意一个值 $x$(可以是左边界值 `a[r]`,右边界值 `a[l]`,中间值 `a[(l+r+1)/2]`)。
  2. 进行排序,在数组段内,将比 $x$ 小的数都放在 $x$ 的左边,比 $x$ 大的数都放在 $x$ 的右边(双指针)。
  3. 不断递归处理数组段的左右两段,使得任意一个数的左边都比它小,右边都比它大。

 ### 实现1

//选取任意值
int x = a[l]     //a[r]  a[(l+r+1)>>2]

### 实现2

void quick_sort(int *a,int l,int r)
{
    if(l>=r)    return ;
    int x=a[l],i=l-1,j=r+1;
    while(i<j)
    {
        do i++;while(a[i]<x);
        do j--;while(a[j]>x);
        if(i<j)     swap(a[i],a[j]);
    }
    quick_sort(a,l,j);
    quick_sort(a,j+1,r);
}

标签:函数,int,边界值,数组,思路,排序,任意,###
From: https://blog.csdn.net/2302_80359037/article/details/140136396

相关文章

  • 数组的键值操作函数学习
    <?php$url='http://chlop.io?www=23233s&timestamp=23232';//&timesXecho'<hr>';echoparse_url($url)['query'];echo'<hr>';echohtmlspecialchars(parse_url($url)['query']);echo......
  • 力扣第7题:整数反转 字符串函数综合运用(C++)
    给你一个32位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过32位的有符号整数的范围 [−231, 231 −1] ,就返回0。假设环境不允许存储64位整数(有符号或无符号)。示例1:输入:x=123输出:321示例2:输入:x=-123输出:-321示例3:......
  • P1271 选举学生会【排序】
    【模板】排序题目描述将读入的NNN个数从小到大排序后输出。输入格式第一行为一个正整数N......
  • python速通(函数)
    (网页的生成)牛客网的某个网页基本已经写好了,最后一步为了适应手机的尺寸,需要将高度增加一倍。为了适用于多个网页,牛牛希望你能将这个功能定义为一个函数,函数输入网页高度h,输出增加后的结果。defiheight(h):returnh*2h1,h2=map(int,input().split())print(iheight......
  • 34. 在排序数组中查找元素的第一个和最后一个位置(中等)
    34.在排序数组中查找元素的第一个和最后一个位置1.题目描述2.详细题解(1)朴素二分查找算法(2)改进二分查找算法3.代码实现3.1Python  方法一:  方法二:  方法三:优化方法二3.2Java1.题目描述题目中转:34.在排序数组中查找元素的第一个和最后一个位置2.详......
  • sizeof 在函数使用中的问题
    使用sizeof来获取数组的大小在某些情况下是可以的,但在涉及到函数参数时可能会有一些问题。使用sizeof获取数组大小当数组在当前作用域内声明时,可以使用sizeof来获取数组的大小。例如:#include<cstdio>intmain(){charbuffer[10];printf("Sizeofb......
  • STM32封装ESP8266一键配置函数:实现AP模式和STA模式切换、服务器与客户端创建
    鱼弦:公众号【红尘灯塔】,CSDN博客专家、内容合伙人、新星导师、全栈领域优质创作者、51CTO(Top红人+专家博主)、github开源爱好者(go-zero源码二次开发、游戏后端架构https://github.com/Peakchen)STM32封装ESP8266一键配置函数:实现AP模式和STA模式切换、服务器与客户端创建......
  • 排序算法(3) 堆排序
    ​堆排序1.算法原理堆排序的原理与部分没听说过该排序方法的同学猜想的不同,它并不是将堆顶元素逐一弹出后压入数组中来得到一个有序的数组。这种方法在初始建堆时需要使用一个数组空间,在得到有序的数组时需要使用另一个数组空间。而堆排序则是在初始数组的基础上直接进......
  • 【三变量联合分布函数copula】利用AIC BIC确定单变量最优拟合函数、利用AIC确定三变量
            ......
  • STM32F1+HAL库+FreeTOTS学习6——临界段代码保护函数&任务调度器的挂起和恢复函数
    STM32F1+HAL库+FreeTOTS学习6——临界段代码保护函数临界段临界段代码保护函数任务调度器的挂起和恢复函数上一期我们学习了FreeRTOS的内核中断管理以及中断屏蔽控制函数,下面我们来学习临界端代码保护函数的使用临界段临界段也叫临界区,指的是必须完整运行完,不能被......