毕竟,王老师那是见得多了,区区冒泡就敢来装高端搞大新闻?回家再修炼两年吧。

    这不是特么废话么,哪个排序算法不是这么干的?

    • 然后,我们将min_index索引位置上的数字(第一轮其实就是A)依次(开始内循环)和剩余其他所有数字比较大小,如果基准数比某数字大了,那么(注意了⚠️⚠️⚠️)我们将某数字所在的数组索引位置赋值给min_index
    • 然后,现在最小值俨然已经发生了变化,然后循环继续重复前两个步骤一直到本轮终止结束

    不管你能不能看得懂我画的啥意思,反正我强烈你一定要画一画,纸笔演练:2. 排序篇之选择排序 - 图1

    1. function bubble( $arr ){
    2. $length = count( $arr );
    3. $flag = true;
    4. for( $outer = 0; $outer < $length && $flag; $outer++ ){
    5. $flag = false;
    6. for( $inner = $length - 1; $inner > $outer; $inner-- ){
    7. if( $arr[ $inner ] < $arr[ $inner - 1 ] ){
    8. $temp = $arr[ $inner ];
    9. $arr[ $inner ] = $arr[ $inner - 1 ];
    10. $arr[ $inner - 1 ] = $temp;
    11. $flag = true;
    12. }
    13. }
    14. }
    15. }
    16. $length = count( $arr );
    17. for( $outer = 0; $outer < $length - 1; $outer++ ){
    18. $min_index = $outer;
    19. for( $inner = $outer + 1; $inner < $length; $inner++ ){
    20. if( $arr[ $min_index ] > $arr[ $inner ] ){
    21. $min_index = $inner;
    22. }
    23. }
    24. if( $min_index != $outer ){
    25. $temp = $arr[ $outer ];
    26. $arr[ $outer ] = $arr[ $min_index ];
    27. $arr[ $min_index ] = $temp;
    28. }
    29. }
    30. return $arr;
    31. for( $i = 0; $i < $length; $i++ ){
    32. $arr[] = mt_rand( 1,1000);
    33. }
    34. // 冒泡算法
    35. $begin = microtime( true );
    36. for( $i = 0; $i < $length; $i++ ){
    37. bubble( $arr );
    38. }
    39. $end = microtime( true );
    40. echo PHP_EOL.PHP_EOL.PHP_EOL."冒泡算法耗费时间:".( $end - $begin ).PHP_EOL;
    41. // 选择算法
    42. $begin = microtime( true );
    43. for( $i = 0; $i < $length; $i++ ){
    44. select( $arr );
    45. }
    46. $end = microtime( true );

    运行结果如下图所示: