一、简介
它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名冒泡排序。
二、原理
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 作者:吴钧泽