-
- function maoPao($arr,$style)//默认传递的是值,不是地址。如果在$arr前加个&,则和$arr1指向同一个地址,函数外的$arr1也被排好了
- {
- $temp=0;
- $flag=false;
- for($i=0;$i{
- for($j=0;$j{
- if($style=='bts') $op=$arr[$j]<$arr[$j+1];
- else if($style=='stb') $op=$arr[$j]>$arr[$j+1];
- if($op)
- {
- $temp=$arr[$j];
- $arr[$j]=$arr[$j+1];
- $arr[$j+1]=$temp;
- $flag=true;
- }
- }
- if($flag==false)
- {
- break;//当一次横向循环下来flag==false;说明纵向循环里每次相邻元素比较大小时if条件均不满足,即从小到大已排好,无需再横向循环
- }
- }
- foreach ($arr as $key => $value)
- {
- echo $value.',';
- }
- }
- $arr1=array(101,101,-9,-8,0,76,1,57,43,90,23,-56);
- maoPao($arr1,'stb');//small to big
- ?>
复制代码
有关冒泡排序的例子,大家还可以参考如下的文章:
php冒泡排序之交换排序法
又一个php冒泡排序(bubble sort)的例子
php实现冒泡排序算法的代码
php冒泡排序算法一例
php冒泡排序与快速排序的例子
2、选择排序:
第二个数至第n个数分别与第一个数比较,进行交换,第三个数至第n个数分别与第二个数比较,进行交换,直到排序完成。
-
-
/** - *
- *
- *
- */
- function selectSort($arr,$style)
- {
- $temp=0;
- $flag=false;
- for($i=0;$i{
- for($j=$i+1;$j{
- if($style=='bts') $op=$arr[$i]<$arr[$j];
- else if($style=='stb') $op=$arr[$i]>$arr[$j];
- if($op)
- {
- $temp=$arr[$i];
- $arr[$i]=$arr[$j];
- $arr[$j]=$temp;
- $flag=true;
- }
- }
- if($flag==false)
- {
- break;
- }
- }
- foreach ($arr as $key => $value)
- {
- echo $value.',';
- }
- }
- $arr1=array(21.5,33,90,7,-4,5,55,11);
- selectSort($arr1,'stb');
function selectSort($arr,$style)
- {
- $temp=0;
- $flag=false;
- for($i=0;$i{
- for($j=$i+1;$j{
- if($style=='bts') $op=$arr[$i]<$arr[$j];
- else if($style=='stb') $op=$arr[$i]>$arr[$j];
- if($op)
- {
- $temp=$arr[$i];
- $arr[$i]=$arr[$j];
- $arr[$j]=$temp;
- $flag=true;
- }
- }
- if($flag==false)
- {
- break;
- }
- }
- foreach ($arr as $key => $value)
- {
- echo $value.',';
- }
- }
- $arr1=array(21.5,33,90,7,-4,5,55,11);
- selectSort($arr1,'stb');
- echo "
";
- ?>
-
复制代码
|