首页 > 其他分享 >关于排序的一些小问题

关于排序的一些小问题

时间:2023-07-30 18:23:00浏览次数:27  
标签:sort int while 关于 quick 一些 排序 swap

快速排序模板

void quick_sort(int a[],int l,int r)
{
if(l>=r)return;
int i = l - 1 , j =  r + 1;
x = q[l+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);
}
}

在手写快排的时候,经常犯的几个问题,问题代码

void quick_sort(int a[],int l,int r)
{
if(l>=r)return;
int i = l  , j =  r ;//这里直接跳转看while
x = l+r>>1;//这里就直接取中点位置,但要考虑到数组是在变化的
while(i <= j)//会死循环
{
 while (a[i]<= a[x]);i++ ;//这么写容易陷入无限循环,a[i]==a[x]时
 while(a[j] >= a[x]); j-- ;//一样的,还有注意,a[x]是可能会变得,如果swap设涉及到中点的数组那么,中间值就不一定是原数组了
if(i < j) swap(a[i],a[j]);
quick_sort(a,l,j-1),quick_sort(a,j,r);//q[j] <= x,就乱套了
}
}

标签:sort,int,while,关于,quick,一些,排序,swap
From: https://www.cnblogs.com/LongDz/p/17591793.html

相关文章

  • 关于Java的多线程实现
    多线程介绍进程:进程指正在运行的程序。确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能。线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以......
  • 浅谈 dijkstra 与其它文章并没有谈到的一些问题
    讲一个小故逝今天做到了一道很典的题目P1875,我发现我其实并不太会,然后在我看完了题解剽题解的屑以后,我发现我对dijkstra的理解仅仅停留在它的过程,而没有深入挖掘dijkstra的正确性以及它的本质等等。所以这篇文章会从另一个角度来看看dijkstra。也许这是dijkstra的本质吧,还......
  • chatGPT回答的,关于使用USB引导,使用WDS安装操作系统的提示:
    理解网络引导WDS安装windows操作系统么? 当然,我可以帮助您理解以网络引导(WindowsDeploymentServices,即WDS)安装Windows操作系统的基本过程。WindowsDeploymentServices是一种让管理员远程安装Windows操作系统的工具,这样可以在域环境中快速地为多个系统进行操作......
  • 关于使用Qt.labs.platform在arch中报错 ERROR: No native FileDialog implementation
    当跟着QtBook的章节QtQuickControls编写一个ImageViewer,运行时报错:ERROR:NonativeFileDialogimplementationavailable.QtLabsPlatformrequiresQtWidgetsonthissetup.Add'QT+=widgets'to.proandcreateQApplicationinmain().尝试过搜索在cmake中引入Q......
  • 关于视频监控平台云台远程控制的重要意义
    关于视频监控平台云台远程控制的重要意义SkeyeVSS国标视频融合云平台可在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,平台可提供视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、集群、电子地图、H.265视频自动转码、智能分析等视频......
  • 一些工作方法(持续更新)
    调研步骤:收集——归纳——分析——整理——方案。质量管理:PDCA1、P(Plan)计划,包括方针和目标的确定,以及活动规划的制定。2、D(Do)执行,根据已知的信息,设计具体的方法、方案和计划布局;再根据设计和布局,进行具体运作,实现计划中的内容。3、C(Check)检查,总结执行计划的结果,分清哪......
  • 【Python】使用 pyecharts 模块绘制动态时间线柱状图 ① ( 列表排序 | 使用 sorted 函
    文章目录一、列表排序1、使用sorted函数对容器进行排序2、使用list.sort函数对列表进行排序3、使用list.sort函数对列表进行排序-设置排序函数4、使用list.sort函数对列表进行排序-设置lambda匿名排序函数pyecharts画廊网站:https://gallery.pyecharts.org/#/......
  • 【每日随笔】关于 “ 择偶 “ ③ ( 男性视角 - 错过优秀的人 | 跟你在一起是否吃亏 |
    文章目录一、男性视角-错过优秀的人1、跟你在一起是否吃亏2、权衡算计的过程3、高额彩礼是怎么来的4、男人要有自知之明5、不要做舔狗6、雌竟与雄竟应该做的事7、奶头乐-爱情与消费一、男性视角-错过优秀的人1、跟你在一起是否吃亏女人是否愿意和你在一起,做出这个......
  • JFrame一些基础小知识
    JFrame.setLocationRelativeTo方法JFrame.setLocationRelativeTo()是一个JavaSwing中的方法,它用于将窗口居中显示在屏幕上。当你调用该方法时,它会将窗口的位置相对于传入的组件进行定位。如果你传入的是null,则窗口将基于屏幕的中心点进行定位。以下是一些常见的使用方法://将......
  • vue2遇到的一些错误
    一、VUE中的VUEX如何调用modules里面的mutations和state ...mapMutations("workflow",['setApproverConfig','setApprover']),二、Non-nestedroutesmustincludealeadingslashcharacter.Fixthefollowingroutes:-JSExpression 出错点Non-nest......