原始数组 | 9 | 8 | 7 | 6 | 5 |
第0趟 | 8 | 7 | 6 | 5 | 9 |
第1趟 | 7 | 6 | 5 | 8 | 9 |
第2趟 | 6 | 5 | 7 | 8 | 9 |
第3趟 | 5 | 6 | 7 | 8 | 9 |
Function bubbleSort($arr){
//数组总个数(总长度)
$n = count($arr);
//循环趟数($i)
For($i = 0;$i<$n-1;$i++){
//循环比较($j)
For($j=0;$j<$n-1-$i;$j++){
If($arr[$j]>$arr[$j+1]){
$temp = $arr[$j]; //将当前值存入临时变量
$arr[$j] = $arr[$j+1];//将下一个元素的值,放到当前下标中
$arr[$j+1] = $temp;//将当前的值放到下一个下标中
}
}
}
Return $arr;
}
$arr = array(9,8,7,1,5,11);
Var_dump(bubbleSort($arr));
Function select_sort($arr){
//实现思路双重循环完成,外层控制轮数,当前的最小值。内层控制的比较次数
//$i当前最小值的位置,需要参与比较的元素
For($i=0,$len=count($arr);$i<$len-1;$i++){
//先假设最小的值的位置
$p = $i;
//$j当前都需要和哪些元素比较,$i后边的
For($j=$i+1;$j<$len;$j++){
//$arr[$p]是当前已知的最小值
//比较一下,如果发现更小的值,记录下最小值的位置,并在下次比较时采用已知最小的值进行比较
If($arr[$p]>$arr[$j]){
$p = $j;
}
}
//已经确定了当前的最小值的位置,保存到$p中
//如果发现最小值的位置与当前假设的位置$i不同,则位置互换即可
If($p !=$i){
$tmp = $arr[$p];
$arr[$p] = $arr[$i];
$arr[$i] = $tmp;
}
}
//返回最终结果
Return $arr;
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |