正在加载图片...
18.2.1现实算法与程序算法的不同 大家都是这么整理扑克牌:把54张摊开放在桌面,然后不断地调整各张牌的位置,并把已 经有序的牌放到另外一个位置。 生活中的各种算法一般不用考虑“内存”的问题。比如上面的问题,54牌每一张都要占用 点桌面,这算是固定需要的内存,而在“腾挪”各张牌,使之渐渐变得有序的过程中,还需 要开辟新的空间,包括手里抓着的牌,即手心也算是一个内存。 程序排序,要求既要占用内存少,又要速度快。这是衡量一个算法是否优秀的两个基本点 若是应用到人整理牌这一例子,则除了实现将54张牌按次序(牌值和牌花)排好以外,还 需另有要求 1、除了54张牌一开始占用的桌面,及你的一个手心以外,你在整理的过程中,不能让牌再 占用新的桌面空间 2、要求“比较两张牌大小”“交换两张的位置”等过程都尽量地少 你可以拿出家里的扑克牌,现在就开始按上面的要求进行手工排序。也可以下载网站上的“扑 克排序”的程序,通过它来模拟手工排序:鼠标点击某一张牌,该牌将移到当前的空位上。(正 工学员下载课程包中已含该程序) 18.22冒泡排序 “冒泡”是什么意思?湖底有时会冒出一个气泡,气泡刚在湖底时,是很小的,在向上浮的 过程中,才一点地慢慢变大。学过高中的物理的人,应该不难解释这一现象。冒泡排序的过程 有点类似这个过程,每前进一步,值就大一点。 排序当然有两个方向,一种是从小排到大,一种是从大排到小。大多数教科书里都讲第一种, 我们也如此。这样一来,冒泡排序法就改为“沉泡法”了,较大值一点点跑到数组中的末尾18.2.1 现实算法与程序算法的不同 大家都是这么整理扑克牌:把 54 张摊开放在桌面,然后不断地调整各张牌的位置,并把已 经有序的牌放到另外一个位置。 生活中的各种算法一般不用考虑“内存”的问题。比如上面的问题,54 牌每一张都要占用 一点桌面,这算是固定需要的内存,而在“腾挪”各张牌,使之渐渐变得有序的过程中,还需 要开辟新的空间,包括手里抓着的牌,即手心也算是一个内存。 程序排序,要求既要占用内存少,又要速度快。这是衡量一个算法是否优秀的两个基本点。 若是应用到人整理牌这一例子,则除了实现将 54 张牌按次序(牌值和牌花)排好以外,还 需另有要求: 1、除了 54 张牌一开始占用的桌面,及你的一个手心以外,你在整理的过程中,不能让牌再 占用新的桌面空间。 2、要求“比较两张牌大小”“交换两张的位置”等过程都尽量地少。 你可以拿出家里的扑克牌,现在就开始按上面的要求进行手工排序。也可以下载网站上的“扑 克排序”的程序,通过它来模拟手工排序:鼠标点击某一张牌,该牌将移到当前的空位上。(正 工学员下载课程包中已含该程序) 18.2.2 冒泡排序 “冒泡”是什么意思?湖底有时会冒出一个气泡,气泡刚在湖底时,是很小的,在向上浮的 过程中,才一点地慢慢变大。学过高中的物理的人,应该不难解释这一现象。冒泡排序的过程 有点类似这个过程,每前进一步,值就大一点。 排序当然有两个方向,一种是从小排到大,一种是从大排到小。大多数教科书里都讲第一种, 我们也如此。这样一来,冒泡排序法就改为“沉泡法”了,较大值一点点跑到数组中的末尾
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有