冒泡排序: 算法的运作如下:(从后往前)
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
快速排序: 基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,
然后再按此方法对这两部分数据分别进行 快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
PHP代码实现如下:
1 <?php 2 //冒泡排序 3 function maopao_sort($a){ 4 $count = count($a); 5 if($count <= 0) return false; 6 for($i=0;$i<$count;$i++){ 7 for($j=0;$j<$count-$i-1;$j++){ 8 if($a[$j] > $a[$j+1]){ 9 $num = $a[$j]; 10 $a[$j] = $a[$j+1]; 11 $a[$j+1] = $num; 12 } 13 } 14 } 15 return $a; 16 } 17 18 //快速排序(数组排序) 19 function kuaisu_sort($a){ 20 $count = count($a); 21 if($count <= 1) return $a;//此处不能返回false 22 $k = $a[0]; 23 $left_a = array(); 24 $right_a = array(); 25 for($i=1;$i<$count;$i++){ 26 if($a[$i] <= $k){ 27 $left_a[] = $a[$i]; 28 }else{ 29 $right_a[] = $a[$i]; 30 } 31 } 32 $left_a = kuaisu_sort($left_a); 33 $right_a = kuaisu_sort($right_a); 34 return array_merge($left_a,array($k),$right_a); 35 } 36 $a = array(21,3,4,55,42,15,23,67); 37 print_r(maopao_sort($a)); 38 echo "<br/>"; 39 print_r(kuaisu_sort($a)); 40 ?>