冒泡排序
By skyshappiness Posted 2017-04-06 15:53:12 In

一、简介

它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名冒泡排序。


二、原理

1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。

2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3、针对所有的元素重复以上的步骤,除了最后一个。
4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

三、程序语言    

    public function bubbleSort(){
        $test_array_length = 100;
        $test_array = array();
        for($i=0; $i<$test_array_length; $i++){
            $test_array[] = rand(0, 100000);
        }
print_r($test_array);
        unset($i);
        
        $temple = array();
        $temple[] = $test_array[0];
        for($j = 1; $j < $test_array_length;$j ++ ){
            $result = array();
            $add_number = TRUE;
            $temple_len = count($temple);
            for($k = 0; $k < $temple_len; $k++){
                if($test_array[$j] <= $temple[$k] && $add_number === TRUE){
                    $result[] = $test_array[$j];
                    $result[] = $temple[$k];
                    $add_number = FALSE;
                }else{
                    $result[] = $temple[$k];
                }
            }
            if(!in_array($test_array[$j], $result)){ $result[] = $test_array[$j]; }
            $temple = $result;
        }
print_r($result);
    }


    //参考网上代码改进

    public function bubbleSort(){
        $test_array_length = 100;
        $test_array = array();
        for($i=0; $i<$test_array_length; $i++){
            $test_array[] = rand(0, 100000);
        }
print_r($test_array);
        unset($i);
        
        for($j=1; $j<$test_array_length; $j++){
            for($k=0; $k < ($test_array_length - $j); $k ++ ){
                if($test_array[$k] > $test_array[($k + 1)]){
                    $temp = $test_array[($k + 1)];
                    $test_array[($k + 1)] = $test_array[$k];
                    $test_array[$k] = $temp;
                }
            }
        }
print_r($test_array);
    }

四、图形解释

五、引用

1、简书:http://www.jianshu.com/p/441d2550457e 作者:吴钧泽

友情链接
联系方式
  • 邮箱 / E-mail:121388038@qq.com