企业站官方网站,潍坊营销型网站,中国跨境电商前三名,wordpress嵌入百度地图可以导航文章目录 1.题目重述2.思路分析3.代码解释 1.题目重述 题目的要求是不使用库函数或者是其他的内置的函数#xff08;就是已经实现好的函数#xff09;#xff0c;也就是这个排序的逻辑需要我们自己进行实现#xff1b;
2.思路分析
其实这个例子也是很容易理解的#xff… 文章目录 1.题目重述2.思路分析3.代码解释 1.题目重述 题目的要求是不使用库函数或者是其他的内置的函数就是已经实现好的函数也就是这个排序的逻辑需要我们自己进行实现
2.思路分析
其实这个例子也是很容易理解的对吧就是升序排列这个数组里面的元素罢了 思路的话首先我们需要确定这个分类讨论的逻辑链想要明白这个题目你必须要明白那个颜色分类的题目因为这两个题目的思路是完全一致的可以看我之前对于颜色分类的那个题目的详细概述
在那个颜色分类的题目里面我们是0,1,2三个数字但是在这个排序的数组里面里面出现的数据很多相当于是之前的那个题目的一个延伸之前的颜色分类我们使用三路划分就是分为三个部分定义了left,right和i对吧然后这个i负责对于元素进行遍历放到正确的位置上面去 之前我们是使用大于1等于1小于1进行判断的这个里面我们需要指定这个key是按照大于key,小于key等于key进行判断的当只有0,1,2三个元素的时候这个key就是1也就是我们之前的那个颜色分类的题目了
下面的这个里面的交换策略和指针的移动的策略和我们的颜色分类题目完全一致不理解的话可以移步去看一下之前的那个文章 其次我们需要确定这个key应该如何进行选择和确定 这个key实际上就是我们的数组里面的一个元素但是他应该如何进行确定呢这个答案就是随机选择这个key的时候他的时间复杂度是最低的因此我们需要借助random函数随机从这个数组里面选择一个数据作为我们的key
这个随机元素怎么求下面的这个里面的nums后面的中括号里面的就是我们这个元素的下标随机数模上数组元素的个数就是他的位置加上我们的left就是对应数组位置的元素的小标这个random%数组长度left就是随机元素的下标的确定的方法 3.代码解释
qsort是我们的自定义函数实现这个数组元素的排序的功能第9行确定我们的key的选择之前颜色分类的时候left是-1,right是最后一个元素的下一个位置但是在这个里面我们的left是参数l-1两个其实没区别就是我们使用通式进行表示了
qsort就是分别对于三个区域进行排序这个while里面的逻辑和我们的颜色分类里面的逻辑是完全一致的然后就是调用了下面的这个自定义的swap函数仅此而已