高中数学 第一章 统计 1
2 排序问题与算法的多样性备课资料 北师大版必修 3快速排序 对于 n 个数据,当 n 比较小时,冒泡排序用起来比较简单;但是当 n 很大时,它耗费的时间是很惊人的
著名的英国计算机科学家霍尔(C
Hoare)对其进行改进,得到了一种新的交换排序算法,由于性能突出,被称为快速排序法(Quicksort)
快速排序所基于的事实是:为了得到更好的效果,交换应跨过较长的距离进行
这是对冒泡排序算法的改进
将待排序的数组分割成两部分是快速排序的关键
我们总是以某种方式选一个值,然后以它为参照将数组分为两部分,一部分包含的元素大于这个值,一部分包含的元素小于这个值
快速排序算法的核心是分而治之,这和前面介绍的二分法的思想是一致的
我们从一个将不同质量的砝码,按从小到大的次序排序的例子,来看看快速排序是如何进行的
我们的砝码的质量和顺序为 14,17,4,8,24,10,13,7,15(见图 2)
我们选质量为 14 的砝码为参照来分割数组
待排序的砝码图 2 把该砝码放在一边,然后分别从左边和右边开始扫描这个数组
从左往右扫描,一旦发现质量大于1 4 的砝码就停下来,这里是质量为1 7 的砝码
在右边时,是从右往左扫描,一旦发现一个质量小于1 4 的砝码就停下来,这里找到的是质量为 7 的砝码(见图 3),交换这两个质量为 7 和1 7 的砝码(见图 4)
分别查找第一个质量大于和小于 14 的砝码图 3交换找到的两个砝码并继续扫描图 4 继续扫描,从左往右发现质量为 24 的砝码停下来,在从右往左扫描时发现质量小于14 的砝码也停下来,找到的是质量为 13 的砝码(见图 4),交换这两个质量为 24 和 13 的砝码(见图 5)
然后在数组两边各向中间前进一个位置继续进行扫描
一旦左边和右边的扫描相遇,就将这个位置的砝码和参照砝码交换,这里