当前位置:   article > 正文

常用排序算法_05_快速排序

常用排序算法_05_快速排序

目录

1、基本思想

2、算法分析

3、代码实现

(1)python实现


1、基本思想

快速排序(Quicksort),又称划分交换排序(partition-exchangesort),通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程递归进行,以此达到整个数据变成有序序列。

2、算法分析

第一步:在数组中选一个基准元素(通常为数组第一个)。

第二步:将数组中小于基准数的数据移到基准数左边,大于基准数的移到右边。在这个分区结束之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。

第三步:对于基准数左、右两边的数组,不断重复以上两个过程,直到每个子集只有一个元素,即为全部有序。

3、代码实现

(1)python实现

  1. #!/usr/bin/python3
  2. # -*- coding: utf-8 -*-
  3. def quick_sort(data: list[int], first: int, last:int) -> None:
  4. if first >= last:
  5. return
  6. low = first
  7. high = last
  8. mid = data[low]
  9. while low < high:
  10. # 右指针移动
  11. while low < high and data[high] >= mid:
  12. high -= 1
  13. data[low] = data[high]
  14. # low += 1
  15. # 左指针右移
  16. while low < high and data[low] < mid:
  17. low += 1
  18. data[high] = data[low]
  19. # high -= 1
  20. data[low] = mid
  21. print(data)
  22. # 递归快速排序
  23. quick_sort(data, first, low-1)
  24. quick_sort(data, low+1, last)
  25. def main():
  26. data = [54, 26, 93, 17, 77, 31, 45, 55, 20]
  27. # data = [3,1,5,2,1,0]
  28. # data = [7, 31, 23, 13, 35, 3]
  29. print(f"排序前:{data}")
  30. quick_sort(data, 0, len(data)-1)
  31. print(f"排序后:{data}")
  32. if __name__ == '__main__':
  33. main()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/792601
推荐阅读
相关标签
  

闽ICP备14008679号