快排

65 阅读1分钟
  • 从后往前移动(high),因为每次将第一个元素作为枢轴,那么第一个元素的位置就被空了出来,理所应当的应该先从后面找到一个比当前枢轴小的元素移到该空处

  • high == low时,即找到了枢轴元素最终应该所在的位置。所以Partition函数中while里都要加上low<high条件

  • Qsort外层整体要有个if(low<high),是保证该子表长度>1,因为如果长度=1,则可以停止递归排序

  • 只有比枢轴元素大或者小的时候,才移动。所以Partition函数中的while中的条件是>=或<=

  • T(n):

    Qsort():O(log2n)

    Partition():O(n)

    故快排:O(nlog2n),初始状态有关系

  • S(n):平均O(logn) 最坏O(n)

  • 不稳定