Advertisement

问题:双向冒泡排序

阅读量:

题目描述

注:本题只需要提交填写部分的代码

双向冒泡从小到大排序算法的实现过程如下:
(1)以当前序列的第一个元素为起点,依次对相邻的两个元素进行比较,若不符合从小到大的顺序,则进行位置互换,直至遍历完整个序列。经过这一轮操作后,序列的最后一个元素将被确定为最大值。
(2)从当前序列倒数第二个元素开始,对相邻的两个元素按照从后向前的方向进行比较,若不符合条件则交换位置,直到比较至序列起始位置。完成此步骤后,序列的第一个元素将被确认为最小值。
(3)以第二个元素作为新序列的起始点,倒数第二个元素作为新序列的终点,重复执行(1)至(2)的操作步骤,直至新序列中不再包含任何元素。

改进后的双向冒泡从小到大排序算法具体描述如下:
(a)在上述算法的第一步中,需要记录每次交换发生的位置,并将最后一次交换的位置标记为high;如果在比较过程中没有发生任何交换,则表明排序已完成,算法可以提前终止;
(b)在第二步操作时,只需从前一次记录的high位置向前进行比较即可,在此过程中同样需要记录每次交换的位置,并将最后一次交换的位置标记为low;如果未发生交换,则说明排序已完成,可直接结束算法;
(c)在第三步中,新的序列应以low作为起始点、high作为终点,并重复执行(a)至(b)的操作流程,直到新的序列中不再存在任何可处理的元素为止。

全部评论 (0)

还没有任何评论哟~