看最后一句话,为什么以a[r]为基准,a[r]又是最大的数会陷入死循环

img


看最后一句话,为什么以a[r]为基准,a[r]又是最大的数会陷入死循环

道理很简单,如果分区选择最大的数,而最大的数在最后面,分区的目标是把比基准更小的数放在前面更大的放在后面
那么这样一来,操作前后没有区别,等于没有操作,岂不是死循环么

快速排序是一种常用的排序算法,其基本原理是选择一个基准数,将比基准数小的元素放在基准数的左边,比基准数大的元素放在基准数的右边,然后递归地对左右两个子序列进行同样的操作,直到整个序列有序。具体步骤如下:

  1. 选取基准数:从序列中选择一个数作为基准数,一般选择第一个数或者最后一个数。
  2. 分割操作:将序列中小于基准数的元素放在基准数的左边,大于基准数的元素放在基准数的右边。
  3. 递归操作:对左右两个子序列进行递归操作,直到序列有序。

快速排序的时间复杂度为O(nlogn),是一种比较高效的排序算法。

如图上描述,因为会将小的放左边,大的放右边,如果判断条件带了等于号,那么会一直判断为 true。