简述一下什么是快速排序? - 面试宝典

举报
皮牙子抓饭 发表于 2023/08/25 09:13:06 2023/08/25
【摘要】 快速排序是一种常用的排序算法。它的基本思想是通过选择一个基准元素,将待排序的序列划分为两个子序列,其中一个子序列的所有元素都小于基准元素,另一个子序列的所有元素都大于基准元素。然后对这两个子序列分别进行递归地快速排序,直到整个序列有序。 具体的实现步骤如下:选择一个基准元素,一般选择序列的第一个元素。将序列中比基准元素小的数移到基准元素的左边,比基准元素大的数移到基准元素的右边。这一步称为分...

快速排序是一种常用的排序算法。它的基本思想是通过选择一个基准元素,将待排序的序列划分为两个子序列,其中一个子序列的所有元素都小于基准元素,另一个子序列的所有元素都大于基准元素。然后对这两个子序列分别进行递归地快速排序,直到整个序列有序。 具体的实现步骤如下:

  1. 选择一个基准元素,一般选择序列的第一个元素。
  2. 将序列中比基准元素小的数移到基准元素的左边,比基准元素大的数移到基准元素的右边。这一步称为分区操作。
  3. 对基准元素左右两个子序列递归地进行快速排序。
  4. 合并左右两个子序列,得到完整的有序序列。 快速排序的平均时间复杂度为O(nlogn),最坏情况下的时间复杂度为O(n^2),空间复杂度为O(logn)。它是一种原地排序算法,不需要额外的空间。由于其高效的性能和简单的实现方式,快速排序被广泛应用于各种排序场景中。

以下是一个使用Python实现的快速排序示例代码:

pythonCopy codedef quick_sort(arr):
    if len(arr) <= 1:
        return arr
    pivot = arr[0]
    left = [x for x in arr[1:] if x < pivot]
    right = [x for x in arr[1:] if x >= pivot]
    return quick_sort(left) + [pivot] + quick_sort(right)
# 测试示例
arr = [6, 3, 8, 2, 9, 1]
sorted_arr = quick_sort(arr)
print(sorted_arr)

运行以上代码,将输出 ​​[1, 2, 3, 6, 8, 9]​​,表示数组经过快速排序后的结果。在代码中,使用递归的方式实现了快速排序。首先选择数组的第一个元素作为基准元素(pivot),然后通过列表解析将比基准元素小的数放到左边的子序列,将比基准元素大的数放到右边的子序列。接着分别对左右子序列进行递归的快速排序,最后将左子序列、基准元素和右子序列合并成一个有序的序列返回。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。