冒泡排序:
原理:
把第一个数字和所有数字进行比较,然后遇到大的交换位置,这样第一次就把最大的放在了最后边,然后继续在比较,第二次比较的时候最后一个数字就不用比较了,因为已经确定它是最大的了,以此类推。
1. 冒泡排序法
* 思路分析:法如其名,就是像冒泡一样,每次从数组当中 冒一个最大的数出来。
* 比如:2,4,1 // 第一次 冒出的泡是4
* 2,1,4 // 第二次 冒出的泡是 2
* 1,2,4 // 最后就变成这样
时间复杂度:
原理:
把第一个数字和所有数字进行比较,然后遇到大的交换位置,这样第一次就把最大的放在了最后边,然后继续在比较,第二次比较的时候最后一个数字就不用比较了,因为已经确定它是最大的了,以此类推。
1. 冒泡排序法
* 思路分析:法如其名,就是像冒泡一样,每次从数组当中 冒一个最大的数出来。
* 比如:2,4,1 // 第一次 冒出的泡是4
* 2,1,4 // 第二次 冒出的泡是 2
* 1,2,4 // 最后就变成这样
时间复杂度:
冒泡排序是一种用时间换空间的排序方法,最坏情况是把顺序的排列变成逆序,或者把逆序的数列变成顺序。
代码:
function maopao($arr) { $len = count($arr); for($i=1;$i<$len;$i++) { for($k=0;$k<$len-$i;$k++) { if($arr[$k]>$arr[$k+1]) { $tmp = $arr[$k+1]; $arr[$k+1] = $arr[$k]; //颠倒位置,大k对大值,小k对应小值
$arr[$k] = $tmp;// var_dump($arr);die; 1.
//将大的换到后边,小的在前边// var_dump($arr);die; 2.
}
}
} return $arr;
}
$arr = array(9,8,7,6,5,4,3,2,1,0);
//两两比较,较大的数扔到数组最后边var_dump(maopao($arr)); 3. 咱们分别在1,2,3 处 分别进行分别打印
我们最后冒泡排序完成的结果是第三站图,在第一次和第二次打印中我们可以看出在当k=0时,就将数组中的k为0,1的值进行互换;同理,得到最后想要的数组。
总而言之