当一个泥腿子出身的码了三年的php的phper头一次来到BAT面试的时候,似乎听到看到人家都在用O(n)、O(n^2)抑或AVL、B+Tree、Huffuman之类的词语彼此交流。我能想象出来,在面对面试官的时候,瑟瑟发抖的你被对方的知识体系所笼罩,对方在向你展示冰块,而你,也真是第一次见到冰块。
不过,话说回来,咱老李也不是个孬种,就算咱老李是编筐专业毕业的,到头来不照样带兵干仗?
话再说回来,即便是科班的,也有暂七师不是?
不过,涨涨见识总归还是不错的。一个冒泡排序和一个选择排序,能够初步给你揭开算法的奥妙和重要。王老师是把你带进门了,至于后面怎么着,全看你自己的造化了。
对于直接插入排序,实际上我一直怀疑就是一个程序员在打扑克的时候发明的,因为这整个逻辑过程类似于抽牌。你跟丁伟、老赵玩斗地主,你抽到牌有
抽象思维归抽象思维,每次运用到实践上,总是写不出来,发愁。所以为了加深理解,还是老套路,乖乖地纸笔演练吧:
<?php
$arr = [ 6, 4, 7, 2, 9, 8, 1 ];
$length = count( $arr );
for( $outer = 1; $outer < $length; $outer++ ){
if( $arr[ $outer ] < $arr[ $outer - 1 ] ){
$temp = $arr[ $outer ];
for( $inner = $outer - 1; $inner >= 0 && $arr[ $inner ] > $temp; $inner-- ){
$arr[ $inner + 1 ] = $arr[ $inner ];
}
$arr[ $inner + 1 ] = $temp;
}
}
print_r( $arr );
运行结果如下图所示:
最后,咱旅长心疼咱老李,送了咱一张直接插入排序的动态图,你们感受一下: