分治法之快速排序算法

本文介绍了使用分治法解决快速排序问题的过程。通过详细解释快速排序的思想,包括选取基准、分区操作和递归排序,然后展示了一个用编程语言实现的随机生成9个正整数并进行快速排序的例子。经过一系列步骤,最终成功将数列从小到大排序并输出结果。
摘要由CSDN通过智能技术生成

这周的算法设计与分析的作业,要求是根据所讲基本算法选择其一,给出具体事例,并且详细描述算法实现过程,同时利用一种语言编程实现,得出结果。将整个过程详细整理上传平台。
上周所讲算法也只有那么几种:分治法,动态规划、贪心算法、回溯法、分值界限。
这次用了分治法解决快速排序的问题。

快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,它的具体思想如下:
1.从数列中挑出一个元素,称为 “基准”(pivot);
2.重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。
3.递归(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。
递归的最底部情形,是数列的大小是零或一,也就是永远都已经被排序好了。虽然一直递归下去,但是这个算法总会退出,因为在每次的迭代(iteration)中,它至少会把一个元素摆到它最后的位置去。

本次试验的目的是随机生成9个正整数,然后使用快速排序算法对这9个正整数从小到大进行排序,并输出排序结果。程序如附录一所示,运行结果如附录二所示。

具体的步骤如下:
1. 假设随机数为83,82,86,84,23,43,61,83,53,并打印出来。
2. 设最左边的数a[left]=a[0],最右边的数a[r

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值