冒泡排序法

2.请写出常见的排序算法,并用PHP实现冒泡排序,将数组$a = array()按照从小到大的方式进行排序。

常见的排序算法:冒泡排序法、快速排序法、简单选择排序法、堆排序法、直接插入排序法、希尔排序法、合并排序法。

冒泡排序法的基本思想是:对待排序记录关键字从后往前(逆序)进行多遍扫描,当发现相邻两个关键字的次序与排序要求的规则不符时,就将这两个记录进行交换。这样,关键字较小的记录将逐渐从后面向前面移动,就象气泡在水中向上浮一样,所以该算法也称为气泡排序法。

//冒泡排序法

Function mysort($arr){

         For($i=0;$i<count($arr); $i++){

                  For($j=0; $j<count($arr)-1-$i; $j++){

                           If($arr[$j]> $arr[$j+1]){

                                    $tmp=$arr[$j];

                                    $arr[$j]=$arr[$j+1];

                                    $arr[$j+1]=$tmp;

            }

       }

   }

         Return$arr;

}

$arr=array(3,2,1);

print_r(mysort($arr));
2.
<?php 
 //php algorithm bubble

 // 3, 8 , 99, 75, 23, 1, 29, 51, 24, 13, 78.

//第一次循环,如果有小元素就往后走,即冒泡,这样循环一次,最小的1就冒泡到最顶部了,即$array[10]=1;
//第二次循环,如果有小元素就往后走,及冒泡,这样循环一次,第二小的3就冒泡到倒数第二的位置了,即$array[9]=3;
//...以此类推。遍历循环数组的个数-1次,就按照从大到小将数组排序了,

//其中可以做些优化,第一次冒泡需要冒泡到最后一个元素,第二次就冒泡到倒数第二个元素就ok了,即count($array)-2,还可以优化的地方这里就不做深入探讨了。
function dump($arr){
	echo '<pre>';
	print_r($arr);
	echo '</pre>';
}

$array  =  array(3,8,99,75,23,1,29,51,24,13,78);

dump($array);

for($i=0;$i<count($array);$i++){
	for($j=0;$j<count($array)-$i-1;$j++){
		if($array[$j]<$array[$j+1]){
			$temp = $array[$j];
			$array[$j] = $array[$j+1];
			$array[$j+1] = $temp;
		}
	}
}
dump($array);



 

你可能感兴趣的:(冒泡排序法)