冒泡排序算法的此变体的名称是什么?

时间:2018-10-18 10:51:21

标签: algorithm sorting

下面的gif中显示的排序算法的名称是什么?

Sort Algorithm

更新

最简单的形式每次都会遍历整个列表:

伪代码:

$term_start = "2017-01-01";
$now        = "2019-02-01";
$ts1        = strtotime($term_start);
$ts2        = strtotime($now);
$year1      = date('Y', $ts1);
$year2      = date('Y', $ts2);
$month1     = date('m', $ts1);
$month2     = date('m', $ts2);
$diff       = (($year2 - $year1) * 12) + ($month2 - $month1);
echo $diff;

2 个答案:

答案 0 :(得分:1)

看起来像双向气泡排序(a)。您可以通过从左到右移动元素(通过与后继元素交换),直到找到更大的元素,然后继续移动该元素。

“常规”气泡排序的唯一缺点是,交替遍历的方向不同,当您在最后添加随机值然后对整个对象进行气泡排序时,这有助于大部分排序的数据集。 / p>

话虽如此,并且假设您不是自己制作动画的,那么肯定可以从中获得动画的网站对它的含义有所指示,是吗? :-)


(a)显然是 称为鸡尾酒种类(相对于您摇晃鸡尾酒杯的方式),尽管在我看来很长职业,我从未听说过这样的职业。

答案 1 :(得分:0)

似乎是鸡尾酒排序,它是冒泡排序的一种变体。 Bubble排序算法始终从左遍历元素,并在第一次迭代中将最大的元素移至其正确位置,在第二次迭代中将其移至第二大位置,依此类推。鸡尾酒排序在两个方向上交替遍历给定数组。

算法: 算法的每次迭代都分为两个阶段:

1-就像气泡排序一样,第一阶段从左到右循环遍历数组。在循环期间,将比较相邻的项目,如果左侧的值大于右侧的值,则将交换值。在第一次迭代结束时,最大数量将驻留在数组的末尾。

2-第二阶段以相反的方向循环通过数组-从刚排序的项目之前的项目开始,然后移回数组的开头。同样,这里还会比较相邻的项目,并在需要时进行交换。

该算法需要完成整个传递过程,而无需进行任何交换即可知道它已被排序。

时间复杂度相同,但鸡尾酒的性能优于气泡排序。通常,鸡尾酒分选比气泡分选快不到两倍。考虑示例(2、3、4、5、1)。在此示例中,冒泡排序需要四个遍历数组,而鸡尾酒排序仅需要两个遍历。