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