问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

c语言 排序函数

发布网友 发布时间:2022-04-22 15:42

我来回答

2个回答

热心网友 时间:2023-09-08 22:50

首先这是一种快速排序的算法,你也应该知道,快速排序就是选择序列中的一个元素作为基准,通过循环找到这个基准最终的位置,并把所有小于这个基准的元素移到这个位置的左边,大于基本的元素移到右边,这样再对这个基准的左右两边分别递归调用自己,最终就能得到排序的结果。
再来解释一下这个例子,它选择的基准就是v[(left+right)/2],然后将这个基准雨v[left]交换,现在假设你想从头排序到最后,则你会将left传个0,也就是他将这个基准和V[0]交换了,这个时候开始循环,因为第一个元素是基准,所以从第二个元素开始循环(也就是left+1),然后到if判断部分,如果v[i]<v[left],也就是说这个时候已经至少有一个元素比基准小了,所以基准至少在v[1]或者之后了,所以他把你找到的这个比基准小的v[i]和v[++last]交换,这时候v[i]的位置已经是在基准的正确位置或者之前了,不会在基准之后的,所以这就实现了把比基准小的元素移到基准的正确位置之前,你说的【第一遍执行过程中,第8行last=left=0,那么到了11行时相当于交换v[1]和v[0+1]】这没有错,确实是在自己交换自己,但是这样并不违背前面的思路不是么?当if条件不满足的时候,last是不会增加的,但是i会一直加1,所以last和i就会不同,这只是在将比基准小的元素移到基准之前,每有一个比基准小的,last就加1,这样当你循环一遍之后的last值就是基准应该在的位置,而且这个时候,所有比基本小的元素也都在last之前了,这时候last位置的元素也是比基准小的,这没关系,因为之后还有一句swap[v,last,left],到目前位置,基准的位置找到了,基准左边的元素都比基准小,右边都比基准大,再对基准的左右两边递归调用自己,就完成了序列的排序。

热心网友 时间:2023-09-08 22:50

路过,试试百度
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
围裙面料有哪些材质 围裙款式种类关于围裙款式种类 辉瑞、莫德纳和强生计划推出 RSV 疫苗,年内或将向监管机构 Pfizer/BioNTech新冠mRNA疫苗选择了BNT162b2启动临床2/3期 辉瑞新冠疫苗什么技术 美国辉瑞预防什么 免责条款的意思是什么? 微电子专业的女生就业前景如何? 土建工程清包五项是什么 在工地承包五项、具体的都应该干些什么 c语言的排序函数 c语言,使用函数的选择法排序 C语言 排序 函数 Linux www服务器配置? c 排序—sort()函数 c语言怎么用自定义函数排序 linux web服务器配置文件中语句MaxClients 150,表示什么意思? C语言中的排序函数是什么 怎么洗去丙烯颜料? 未开封发烟干了怎么让它软起来? 刷子上的丙烯颜料怎么洗掉 香烟拆开后多久不能抽了 使用颜料丙烯该用什么刷子?用后怎么处理? 香烟被水浸湿后晒干还能抽吗? 泡过水的烟还能抽吗 关于烟的一些知识 烟干了怎么抽 格力空调移机可以找售后服务吗 格力空调移机可以找售后服务吗 上海空调移机电话徐汇空调维修哪家好家用空调拆装加氟 如何用函数实现三个数的排序(用的是C语言) C语言排序函数看不懂,求教! 关于C中封装排序函数 C语言字符串快速排序函数 什么是C语言程序设计? c语言函数库里面有排序的函数吗? c语言函数排序问题 C语言快速排序函数怎么调用 如何知道自己是不是手机上瘾了? 手机上瘾的征兆有哪些 你对手机上瘾了吗 出现七种现象要小心 手机成瘾定义 手机成瘾的危害 智能手机也会玩上瘾 你有这些症状吗 刷手机“上瘾”,是病吗?专家怎么说的? 孩子放假期间长时间玩手机,家长应该怎么劝导孩子合理玩手机呢? 404 Not Found 手机玩多了脑子反应迟钝 玩手机上瘾易患抑郁症,你满足上瘾的几个征兆吗 手机上瘾的表现有哪些
  • 焦点

最新推荐

猜你喜欢

热门推荐