快排

核心思想:找一个数做中心点,一趟排序下来,比中心点小的数在一边,比中心点大的数在另外一边,递归,最后使整个数列有序
实现:生命一个方法,有三个参数,数列arr,头,尾(不能直接用0和len(arr)不利于递归)
定义两个指针low和high,把中心点取出来存在变量里。
如果high和low不相等,且high指针指向的数比中心点大或等于,那么high指针向中心点方向移动
直到high指针指向的数比中心点值小,那么把high指针指向的值赋值给low指针,然后low指针移动,直到low指针指向的值大于中心点值,那么把low指针的值赋值给high指针

直到最后low指针与high指针重叠,那么就是中心点的位置
这样一趟排序下来,中心点左边的数比中心点小,中心点右边的数比中心点大
然后递归排序,中心点左边的数一组,递归调用快排函数,中心点右边的数递归调用快排函数


全部评论
智显光电?
点赞 回复 分享
发布于 2022-04-15 08:30
high指针先移动
点赞 回复 分享
发布于 2022-04-15 12:26

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务