APP下载

辩证内含丰富的算法举例

2017-02-25王春枝王立柱

计算机教育 2017年1期
关键词:排序

王春枝 , 王立柱

(湖北工业大学 计算机学院, 湖北 武汉 430068)

辩证内含丰富的算法举例

王春枝 , 王立柱

(湖北工业大学 计算机学院, 湖北 武汉 430068)

快速排序和堆排序是程序设计中的典型算法,但不易理解,因为它们内含深刻的辩证思想。文章详细论述这些算法中的辩证思想,旨在帮助学生高屋建瓴地把握这些算法。

快速排序;堆排序;二叉树;遍历

0 引 言

快速排序和堆排序看似线性问题,实则是非线性问题,而且综合运用多种方法才能求解。以快速排序为例,它需要综合运用线性连续存储、二叉树、前序遍历和中序遍历的概念。综合运用这些概念,包含着丰富的辩证思想。这些算法一般是数据结构中的典型算法,但很多教材特别是语言教材都在数据结构之前讲授这些内容,给学生的理解带来很大困难。我们有必要具体解释它们固有的辩证内容。

1 快速排序算法

快速排序算法的基本思想是利用线性连续存储结构,在二叉树的前序遍历基础上建立二叉树,最终的有序序列是这棵二叉树的中序序列[1]。

以数组元素[49,38, 65, 97, 76, 13, 27, 50]为例,实施快速排序。

第1趟排序:以首元素49为基准,把数组元素分为左右两部分,左部分不大于基准,右部分不小于基准,如图1(a)所示。基准49相当于根,左右两部分[27,38, 13]和[76, 97, 65, 50]相当于左右子树的节点。图1(b)是它的拓扑结构。

图1 第1趟排序

第2趟排序:以49的左子树元素序列的首元素27为基准,将其分作左右两部分[13]和[38], 27是左子树的根,如图2(a)所示,图2(b)是它的拓扑结构。……

登录APP查看全文

猜你喜欢

排序
排排序
作者简介
作者简介
作者简介(按文章先后排序)
恐怖排序
律句填空排序题的备考策略
节日排序
刻舟求剑
作者简介(按文章先后排序)
2010年