发表日期: 2021-04-24 09:03:30 浏览次数:114
苏州网站制作【苏州网站优化】苏州建网站、苏州微信公众号运营、苏州网页设计、苏州微信小程序商城
苏州,简称“苏”,古称姑苏、平江,是江苏省地级市,国务院批复确定的中国长江三角洲重要的中心城市之一、国家高新技术产业基地和风景旅游城市 [1] 。截至2019年,全市下辖5个区、代管4个县级市,总面积8657.32平方千米,建成区面积477.63平方千米,常住人口1075万人,城镇人口827.7万人,城镇化率77%。 [2-3]
苏州地处中国华东地区、江苏东南部、长三角中部,是扬子江城市群重要组成部分,东临上海、南接嘉兴、西抱太湖、北依长江,地处东经119°55′~121°20′,北纬30°47′~32°02′之间。全市地势低平,平原占总面积的54.8%,海拔4米左右,丘陵占总面积的2.7%。苏州属亚热带季风海洋性气候,四季分明,雨量充沛,种植水稻、小麦、油菜,出产棉花、蚕桑、林果,特产有碧螺春茶叶、长江刀鱼、太湖银鱼、阳澄湖大闸蟹等。 [4-5]
苏州是首批国家历史文化名城之一,有近2500年历史,是吴文化的重要发祥地,有“人间天堂”的美誉。中国私家园林的代表——苏州古典园林和中国大运河苏州段被联合国教科文组织列为世界文化遗产。 [6-7]
2020年6月,经中央依法治国委入选为第一批全国法治政府建设示范地区和项目名单。
▶ 用计算机能理解的方式构思解法:算法的设计
计算机擅长高速执行一些基本命令,但无法执行复杂的命令。此处的“基本命令”指的是“做加法”或者“在指定的内存地址上保存数据”等。
计算机是以这些基本命令的组合为基础运行的,面对复杂的操作,也是通过搭配组合这些基本命令来应对的。上文中提到的“对 个数字进行排序”对计算机来说就是复杂的操作。如何设计算法来解决这个排序问题,也就等同于构思如何搭配组合计算机可以执行的那些基本命令来实现这个操作。
能解决排序问题的算法不止选择排序这一个。那么,当有多个算法都可以解决同一个问题时,我们该如何选择呢?在算法的评判上,考量的标准也各有不同。
比如,简单的算法对人来说易于理解,也容易被写成程序,而在运行过程中不需要耗费太多空间资源的算法,就十分适用于内存小的计算机。
不过,一般来说我们最为重视的是算法的运行时间,即从输入数据到输出结果这个过程所花费的时间。
▶ 使用全排列算法进行排序
为了让大家体会一下低效率算法的效果,这里来看看下面这个排序算法。
① 生成一个由
个数字构成的数列(不和前面生成的数列重复)
② 如果①中生成的数列按从小到大的顺序排列就将其输出,否则回到步骤①
我们就把这个算法称为“全排列算法”吧。全排列算法列出了所有的排列方法,所以不管输入如何,都可以得到正确的结果。
那么,需要等多久才能出结果呢?若运气好,很快就能出现正确排列的话,结果也就立马出来了。然而,实际情况往往并不如我们所愿。最差的情况,也就是直到最后才出现正确排列的情况下,计算机就不得不确认所有可能的排列了。
个数字有
种不同的排列方法
。现在,我们来看看
时是怎样一种情况吧。
公式①中,50! 即为数字 1 到数字 50 的乘积。为了便于计算,我们通过公式②③将结果近似转换为 10 的 次方的形式。公式②右边部分去掉了 10 以下的数字,因此小于 50!。公式③左右都是 40 个数字的乘积,但左边数字都大于 10,因此大于右边的
。接下来我们就用
近似代表 50 个数字的所有排列情况来进行计算。
假设 1 台高性能计算机 1 秒能检查 1 万亿()个数列,那么检查
个数列将花费的时间为
秒。1 年为 31 536 000 秒,不到
秒。因此,
秒>
年。
从大爆炸开始宇宙已经经历了约 137 亿年,即便如此也少于 年。也就是说,仅仅是对 50 个数字进行排序,若使用全排列算法,就算花费宇宙年龄的
倍时间也得不出答案。

▶ 使用选择排序算法进行排序
那么,使用前文提到的选择排序算法,情况又将如何呢?
首先,为了在第 1 轮找到最小的数字,需要从左往右确认数列中的数字,只要查询 个数字即可。在接下来的第 2 轮中,需要从
个数字中寻找最小值,所以需要查询
个数字。将这个步骤进行到第
轮的时候,需要查询的次数如下。
的时候
。假设 1 秒能确认 1 万亿(
)个数字,那么
秒便能得出结果,比全排列算法的效率高得多。
