下面的gif中显示的排序算法的名称是什么?
更新:
最简单的形式每次都会遍历整个列表:
伪代码:
$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;
答案 0 :(得分:1)
看起来像双向气泡排序(a)。您可以通过从左到右移动元素(通过与后继元素交换),直到找到更大的元素,然后继续移动该元素。
“常规”气泡排序的唯一缺点是,交替遍历的方向不同,当您在最后添加随机值然后对整个对象进行气泡排序时,这有助于大部分排序的数据集。 / p>
话虽如此,并且假设您不是自己制作动画的,那么肯定可以从中获得动画的网站对它的含义有所指示,是吗? :-)
(a)显然是 称为鸡尾酒种类(相对于您摇晃鸡尾酒杯的方式),尽管在我看来很长职业,我从未听说过这样的职业。
答案 1 :(得分:0)
似乎是鸡尾酒排序,它是冒泡排序的一种变体。 Bubble排序算法始终从左遍历元素,并在第一次迭代中将最大的元素移至其正确位置,在第二次迭代中将其移至第二大位置,依此类推。鸡尾酒排序在两个方向上交替遍历给定数组。
算法: 算法的每次迭代都分为两个阶段:
1-就像气泡排序一样,第一阶段从左到右循环遍历数组。在循环期间,将比较相邻的项目,如果左侧的值大于右侧的值,则将交换值。在第一次迭代结束时,最大数量将驻留在数组的末尾。
2-第二阶段以相反的方向循环通过数组-从刚排序的项目之前的项目开始,然后移回数组的开头。同样,这里还会比较相邻的项目,并在需要时进行交换。
该算法需要完成整个传递过程,而无需进行任何交换即可知道它已被排序。
时间复杂度相同,但鸡尾酒的性能优于气泡排序。通常,鸡尾酒分选比气泡分选快不到两倍。考虑示例(2、3、4、5、1)。在此示例中,冒泡排序需要四个遍历数组,而鸡尾酒排序仅需要两个遍历。