php排序&冒泡法排序

来源:互联网 发布:java volatile static 编辑:程序博客网 时间:2024/04/28 21:09

1、数组的排序常用方法:

      冒泡法、选择排序、插入排序、快速排序、

2、排序分类:

      内部排序:指将需要处理的所有数据都加载到内部存储器中进行排序。

                          内部排序又分为交换式(冒泡法、快速排序)、选择式、插入式排序法

                          冒泡法、选择排序、插入排序、快速排序都属于内部排序

 

      外部排序:数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。

3、排序方法效率:

      冒泡发<选择排序<插入排序

      快速排序法速度很快,但效率并不高,占用空间太多

4、冒泡排序法实例:

冒泡排序的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1 个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再大于第2个数),将小数放前,大数放后,一直比较到最小数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最小数。如此下去,直至最终完成排序。由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。 

<?php//echo "<br>";echo"<br>";echo "<br>";echo "<br>"; $arr =array(1,5,3,9,4,8,12,3,0,7,7.6,3.4,6);//定义一个中间变量$temp = 0;//升序排序for($i=0;$i<count($arr)-1;$i++){         for($j=0;$j<count($arr)-1-$i;$j++)         {        //说明前面的数比后面的大就要交换                   if($arr[$j]>$arr[$j+1])                   {                            $temp= $arr[$j];                            $arr[$j]= $arr[$j+1];                            $arr[$j+1]= $temp;                   }         }}       //输出排序后数组foreach($arr as $key=>$key_value){         echo'$arr['.$key."]=".$key_value."<br>";}?>
4、冒泡法函数封装实例:

<?php//用函数封装冒泡排序法function bubbleSort(&$arr) //注意此处要加地址传递符号;因为数组默认传递的是值,不是地址;若不地址传递,排序的是$arr而不是$asd。{         //echo"<br>";echo "<br>";echo "<br>";echo"<br>";          //$arr= array(1,5,3,9,4,8,12,3,0,7,7.6,3.4,6);         //定义一个中间变量         $temp= 0;         //升序排序         for($i=0;$i<count($arr)-1;$i++)         {                   for($j=0;$j<count($arr)-1-$i;$j++)                   {        //说明前面的数比后面的大就要交换                            if($arr[$j]>$arr[$j+1])                            {                                     $temp= $arr[$j];                                     $arr[$j]= $arr[$j+1];                                     $arr[$j+1]= $temp;                            }                   }         }       }$asd = array(1,0,2,9,3,8,4,7,5,6);//调用冒泡排序法的函数bubbleSort($asd);//输出排序后数组foreach($asd as $key=>$key_value){         echo'$asd['.$key."]=".$key_value."<br>";}?>


0 0
原创粉丝点击