打印
[应用笔记]

快速排序法的原理

[复制链接]
662|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhuomuniao110|  楼主 | 2023-3-21 22:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
快速排序(Quicksort)是一种基于分治思想的排序算法,由英国计算机科学家 Tony Hoare 在1960年提出,因为它的实现简单、效率高,被广泛应用于各种排序场景。

快速排序的基本思想是选择一个基准元素(pivot),将待排序序列分成两个子序列,其中一个子序列中的所有元素都小于基准元素,另一个子序列中的所有元素都大于等于基准元素。然后对这两个子序列递归地进行快速排序,直到整个序列有序。
快速排序是一种高效的排序算法,它采用了分治策略。快速排序的基本思想是选取一个基准元素,将序列中小于等于该元素的元素放在基准元素的左边,将序列中大于该元素的元素放在基准元素的右边,然后分别对左右两部分递归地进行快速排序,最终得到一个有序序列。

具体步骤如下:

选取基准元素:从待排序的序列中选择一个元素作为基准元素(通常选择第一个元素或最后一个元素)。

划分序列:将序列中小于等于基准元素的元素放在左边,将大于基准元素的元素放在右边。可以采用两个指针i和j,分别从左边和右边扫描序列,当找到小于等于基准元素的元素时,将它和i所指的元素交换位置,i和j继续向右移动;当找到大于基准元素的元素时,将它和j所指的元素交换位置,j向左移动,直到i和j相遇。

递归排序左右子序列:对左右两个子序列递归地进行快速排序。

合并结果:将左子序列、基准元素和右子序列合并起来,得到最终的有序序列。

快速排序的时间复杂度为O(nlogn),空间复杂度为O(logn)。由于快速排序采用了分治策略,具有较好的局部性,因此在实际应用中具有很高的效率。

使用特权

评论回复
沙发
小明的同学| | 2023-3-23 18:43 | 只看该作者
讲解的很好。

使用特权

评论回复
板凳
tpgf| | 2023-4-13 10:03 | 只看该作者
排序算法是《数据结构与算法》中最基本的算法之一

使用特权

评论回复
地板
heimaojingzhang| | 2023-4-13 13:10 | 只看该作者
排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存

使用特权

评论回复
5
keaibukelian| | 2023-4-13 14:30 | 只看该作者
常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等

使用特权

评论回复
6
paotangsan| | 2023-4-13 15:55 | 只看该作者
快速排序之所以比较快,是因为与冒泡排序相比,每次的交换时跳跃式的,每次排序的时候设置一个基准点,将小于等于基准点的数全部放到基准点的左边,将大于等于基准点的数全部放到基准点的右边。这样在每次交换的时候就不会像冒泡排序一样每次只能在相邻的数之间进行交换,交换的距离就大的多了。因此总的比较和交换次数就少了,速度自然就提高了。

使用特权

评论回复
7
renzheshengui| | 2023-4-13 16:09 | 只看该作者
快速排序的每一轮处理其实就是将这一轮的基准数归位,直到所有的数都归位为止,排序就结束了

使用特权

评论回复
8
wakayi| | 2023-4-13 16:36 | 只看该作者
随便找的这个基准数会对排序的速度有影响吗

使用特权

评论回复
9
LOVEEVER| | 2023-5-21 19:22 | 只看该作者
排序算法有很多,其实简单实用自己的程序才是关键的额

使用特权

评论回复
10
szt1993| | 2023-5-21 19:47 | 只看该作者
算法都是从排序练习起来的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

188

主题

3247

帖子

10

粉丝