白二娃
本题来自NOC创新编程复赛题中的第四题,这是一道算法编程题,考查的是选择排序算法。题目原文:
我国幅员辽阔,国土面积在全世界排名第三,其中各省、自治区、直辖市面积均存放于列表中,每个省级区域的面积各不相同,请把它们按照面积从小到大的顺序排列。
要求:1.當前省份与面积是一一对应的,使用选择排序算法完成面积数据排序,并保持省份与面积的对应关系。
2. 完成排序后,角色说出“我的家乡是XXX,它的面积全国排名第X”。
这道题指定了必须用选择排序算法。在编程学习中一般我们会学习8种排序算法。这几种排序的关系和特点如图。
选择排序是一种非常直观的排序算法。首先在未排序列表中找到最小(或最大)元素,存放到排序序列的起始位置。然后,再从剩余未排序元素中继续寻找最小(或最大)元素。以此类推,直到所有元素均排序完成。
比如数据[2,5,1,7,6]用选择算法从小到大排序,2和5比较,2是最小值;最小值2继续和1比较,1成为最小值;最小值1再依次和7、6比较,1都是最小值;因此2和1交换位置。第一轮结束数据为[1,5,2,7,6]。第二轮结束数据为[1,2,5,7,6],最小值2和未排序首数字5交换位置(1已经完成排序不再考虑)。最终排序结果为[1,2,5,6,7]。
题目中已经给出两个列表“面积”和“省份”,每个表格34个数据。我们循环比较面积列表中第min项(当前最小项)和第i项(m项后的某一项)的大小,并换位,最终就能将面积最小的放到第1位。