fccjxxw.com
非常超级学习网 学习超级帮手
当前位置:首页 >> 数学 >>

2019-2020学年高中数学第一章统计1.2排序问题与算法的多样性备课资料北师大版必修3.doc

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

待排序的砝码 图2 把该砝码放在一边,然后分别从左边和右边开始扫描这个数组.从左往右扫描,一旦发 现质量大于14 的砝码就停下来,这里是质量为17 的砝码.在右边时,是从右往左扫描,一 旦发现一个质量小于14 的砝码就停下来,这里找到的是质量为 7 的砝码(见图 3) ,交换这 两个质量为 7 和17 的砝码(见图 4).

分别查找第一个质量大于和小于 14 的砝码 图3

交换找到的两个砝码并继续扫描 图4

继续扫描,从左往右发现质量为 24 的砝码停下来,在从右往左扫描时发现质量小于 14 的砝码也停下来,找到的是质量为 13 的砝码(见图 4) ,交换这两个质量为 24 和 13 的砝码 (见图 5). 然后在数组两边各向中间前进一个位置继续进行扫描.一旦左边和右边的扫描相遇,就 将这个位置的砝码和参照砝码交换,这里是交换质量为10和14 的砝码(见图 6).此时, 参照砝码左边的所有砝码质量都小于14,而右边的所有砝码质量都大于14(见图 6).

交换第二次找到的两个砝码并继续扫描 图5

交换参照的砝码和左右扫描相遇位置的砝码 图6 接下来,对左右两边的数组分别采用上面所述的快速排序过程,继续进行下去,直到完 成对数组的排序.经验证明,在所有同数量级的此类排序算法中,快速排序算法的常数因子 最小.因此,就平均时间而言,快速排序是目前最好的一种排序方法.


更多相关文章:

非常超级学习网 fccjxxw.com

copyright ©right 2010-2021。
非常超级学习网内容来自网络,如有侵犯请联系客服。zhit325@126.com|网站地图