首页 > 其他分享 >快速排序

快速排序

时间:2024-05-08 13:34:34浏览次数:19  
标签:sort int 快排 while quick 排序 快速

快速排序

快排模板(以j为分界)

快排属于分治算法,分治算法都有三步:

1.分成子问题
2.递归处理子问题
3.子问题合并

void quick_sort(int q[], int l, int r)
{
    // 递归的终止情况
    if(l >= r) return;
    
    // 第一步:分成子问题
	int i = l - 1, j = r + 1, x = q[1 + r >> 1];
    while(i < j)
    {
        do i++; while(q[i] < x);
        do j--; while(q[i] > x);
        if(i < j) swap(q[i], q[j]);
    }
    
    // 第二步,递归处理子问题
    quick_sort(q, l, j);
    quick_sort(q, j + 1, r);
    
    // 第三步:子问题合并,快排不需要这一步,但归并排序的核心在这一步
}

标签:sort,int,快排,while,quick,排序,快速
From: https://www.cnblogs.com/hnu-hua/p/18179467

相关文章

  • 如何快速掌握d3js
    D3.js是一个强大的JavaScript库,用于使用HTML、SVG和CSS生成数据可视化。学习D3.js需要一定的JavaScript、HTML和CSS基础。以下是一个为期四周的快速掌握D3.js的学习计划,分为基础入门、典型用法、原理理解以及进阶用法四个阶段。第一周:基础入门目标:掌握D3.js的......
  • dataframe的构造,取值,赋值,移动,交集,并集,排序,打印,转List,导出csv
    一、构造  da=pd.read_csv(filepath_or_buffer='data.csv',sep='\t')  print(da)  datas=pd.DataFrame(da)2、直接赋值df=pd.DataFrame([[1.4,np.nan],[7,-4],[np.nan,np.nan],[0.75,-1.3]],index=[1,2,3,4],         columns=[......
  • 快速找出存(不存在)在某个(或多个)文件的文件夹
    首先,需要用到的这个工具:度娘网盘提取码:qwu2蓝奏云提取码:2r1z想要找出有下面这个文件存在的文件夹切换到批量文件复制版块,快捷键Ctrl+5右侧,搜索添加选定范围,勾选搜索文件夹、包含子目录下面就把要存在文件(夹)的条件拖入进去,就会出现路径,再点击开始搜索等待工具提示搜......
  • 构造照亮世界——快速沃尔什变换 (FWT)
    博客园我的博客快速沃尔什变换解决的卷积问题快速沃尔什变换(FWT)是解决这样一类卷积问题:\[c_i=\sum_{i=j\odotk}a_jb_k\]其中,\(\odot\)是位运算的一种。举个例子,给定数列\(a,b\),求:\[c_i=\sum_{j\oplusk=i}a_jb_k\]FWT的思想看到FWT的名字,我们可以联想到之前学过......
  • 选择排序
    //选择排序从序列中找到一个最小值元素,把最小值元素放在整个序列的首部,重复n轮,直到整个序列有序voidSelectSort(intbuf[10],intsize){ intmin=0;//记录最小值元素的下标 inttemp=0;//备份最小值元素的值 //需要比较n轮,每轮找到序列中的最小值元素 for(intn......
  • 二分法、冒泡排序
    【一】二分法二分法查找,也称为折半法,是一种在有序数组中查找特定元素的搜索算法思路:首先,从数组的中间元素开始搜索,如果该元素正好是目标元素,则搜索过程结束,否则执行下一步。如果目标元素大于/小于中间元素,则在数组大于/小于中间元素的那一半区域查找,然后重复步骤的操作。如......
  • 通义灵码实战系列:一个新项目如何快速启动,如何维护遗留系统代码库?
    作者:别象进入2024年,AI热度持续上升,翻阅科技区的文章,AI可谓是军书十二卷,卷卷有爷名。而麦肯锡最近的研究报告显示,软件工程是AI影响最大的领域之一,AI已经成为了软件工程的必选项,也有研究称开发者每天的事务性工作可能占到了七成左右,比如单侧编写等,而这部分恰好是AI所擅长......
  • 通义灵码实战系列:一个新项目如何快速启动,如何维护遗留系统代码库?
    作者:别象进入2024年,AI热度持续上升,翻阅科技区的文章,AI可谓是军书十二卷,卷卷有爷名。而麦肯锡最近的研究报告显示,软件工程是AI影响最大的领域之一,AI已经成为了软件工程的必选项,也有研究称开发者每天的事务性工作可能占到了七成左右,比如单侧编写等,而这部分恰好是AI所擅长......
  • 常见的排序算法——归并排序(二)
    本文记述了自底向上归并排序的基本思想和一份参考实现代码,并在说明了算法的性能后用随机数据进行了验证。◆思想使用自底向上的递推思想进行排序。从大小为1的子范围开始两两归并,得到小规模排序的结果。逐步将子范围的大小翻倍并继续两两归并,直到整个数组范围都已被归并,即得......
  • 01选择排序
     1.选择排序含义每次选择最小的,放到左侧。持续进行。 2.示例代码:defselectionSort(arr):foriinrange(len(arr)-1):#记录最小数的索引minIndex=iforjinrange(i+1,len(arr)):ifarr[j]<arr[minIndex]:......