快速排序的思路是什么?我所给的查找代码中的两个while语句和两个if语句的作用分别是什么

快速排序的思路是什么?我所给的查找代码中的两个while语句和两个if语句的作用分别是什么

img

img

img

查找代码

img

快排的思路你可以看一下下面这篇文章,写的很清楚(只看思路,不用看代码)

C语言排序算法——快速排序_苏枍的博客-CSDN博客_快速排序算法 文章目录快速排序实现思路实现代码快速排序快速排序是将等待排序的集合分成两部分,设定一个k值,其中一部分小于这个k值,另外一部分大于这个k值。对每个部分重复这个过程。知道每部分都只有一个元素的时候。就可以完成排序了。实现思路首先我们需要选取一个k值, 一般情况下我们可以使用数组的第一个值或者最后一个值。假设我们先选取数组的第一位为k值。 我们假设为6。然后我们利用两个指针,一个指针(left)从左边开始向右移动,一个指针(right)从右边开始向左移动,当left指针找到一个大于k值时停下,当r https://blog.csdn.net/sy1227081317/article/details/113922048

这里大体上说一下思路:
快排就是先找一个标记数字,一般选用数组第一个元素(有的选择最后一个元素,都没有影响),Partition函数的作用就是,把这个标记数字移动到合适的位置,是这个数字左边的数都比这个标记数字小,而在其右侧的数据都比这个标记数字大,Partition的返回值就是处理完后这个数字在数组中的下标。然后以这个下标为分界点,将数组分为左半部分和右半部分分别进行处理,直到数组中子数组中只有1个元素为止。
Partion函数中,第一个while循环,是从右侧开始找,找到比tmp小的就停下;然后跟left位置的数交换(if语句的作用),第二个while循环则是从左向右查找,找到比tmp大的就停下,然后跟right位置的数进行交换(if语句的作用)。这种处理后,使得,比tmp小的数都放在了tmp的左侧,比tmp大的数都放在了tmp的右侧。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632