Python算法之旅冒泡排序的故事

冒泡排序的故事

        年关将近,丐帮各分舵派代表前往总舵向帮主进贡。只见帮主门前立了一列梅花桩,各分舵代表立于桩上,等待帮主接见。(梅花桩上的数字代表梅花桩的编号,代表身上的数字代表其布袋数量,布袋数量越多辈分越高)

        此时各代表所在位置如图示:

Python算法之旅冒泡排序的故事_第1张图片

        总管传话,请辈分最高的代表站到最前面(右边)来,其他人依次按辈分大小排队,排队期间禁止喧哗,并不得掉下梅花桩。

        看官您也许会说,辈分最高的代表站到最右边来,这还不简单?让4号桩的6袋弟子和5号桩的4袋弟子换个位置不就行了吗。你这是站在“上帝视角”观看,当然全局在胸,一眼就能看出代表们的辈分高低。可是这些代表们来自不同分舵,彼此并不熟悉,只有站在相邻梅花桩上的代表才能互相交流比较辈分大小,虽然他们都有武功,但为了不从梅花桩上掉下来,也只能和相邻的代表交换位置。

        现在队伍中谁的辈分最高大家并不清楚,需要扫描一遍整个队伍,才能找到他,并让他依次把位置换到最右边来。那么,扫描的顺序如何?是从左向右,还是从右向左呢?相信聪明的你心中已经有了答案。

        因为辈分最高的人最终要站在最右边的梅花桩上,所以我们从最左边的代表开始扫描。第一步是让0号梅花桩和1号梅花桩上的代表交流,由于5袋弟子的辈分更高,所以他和3袋弟子的交换位置;第二步是5袋与1袋弟子交换位置;第三步是5袋与2袋弟子交换位置,此时5袋弟子已经站在了3号梅花桩上;第四步,5袋与6袋弟子交流,发现他们无需交换位置,于是原地不动;第五步是6袋与4袋弟子交换位置。就这样,一趟扫描下来,我们总共比较了5次,交换了4次位置,使得辈分最高的6袋弟子站在了最右边的梅花桩上。此时各代表所在位置如图示:

你可能感兴趣的:(Python算法之旅)