PHP四种排序
来源:互联网 发布:xlplayer mac 没声音 编辑:程序博客网 时间:2024/06/06 23:55
<?phpini_set("error_reporting","E_ALL & ~E_NOTICE"); /* * PHP各类排序算法总结 */$arr = array();$bubblearr = array();$selectarr = array();for($i = 0;$i<2000;$i++){ $arr[$i]=rand(1,9999999);}/* * bubble_sort_start0.54549100 1469071764bubble_sort_end0.92051200 1469071764selectarr_sort_start0.92051200 1469071764selectarr_sort_end0.11352300 1469071765insortarr_sort_start0.11352300 1469071765insortarrr_sort_end0.32253500 1469071765quicksortarr_sort_start0.32253500 1469071765quicksortarrr_sort_end0.33253600 1469071765 */echo 'bubble_sort_start'.microtime().'<br>';bubbleSort($arr);echo 'bubble_sort_end'.microtime().'<br>';echo 'selectarr_sort_start'.microtime().'<br>';slelectSort($arr);echo 'selectarr_sort_end'.microtime().'<br>';echo 'insortarr_sort_start'.microtime().'<br>';insertSort($arr);echo 'insortarrr_sort_end'.microtime().'<br>';echo 'quicksortarr_sort_start'.microtime().'<br>';quickSort($arr);echo 'quicksortarrr_sort_end'.microtime().'<br>';//冒泡排序function bubbleSort($arr){ $len = count($arr); for($i=0;$i<$len-1;++$i){ for($j=0;$j<$len-$i;++$j){ if($arr[$j]>$arr[$j+1]){ $tmp = $arr[$j+1]; $arr[$j+1] = $arr[$j]; $arr[$j] =$tmp; } } } return $arr;}//选择排序//第一轮能把最大的选出来放在第一个位置,第二轮选出来第二个//思路在于假定一个flag也就是第一个为最小的,然后找他后面的,如果比他小就跟他替换掉,以此类推function slelectSort($arr){ //实现思路 双重循环排序,外层控制轮数,当前的最小值 //$i为当前最小值的位置,需要参与比较的元素 $len = count($arr); for($i=0;$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;}//插入排序function insertSort($arr){ //区分 哪部分是已经排序好的 //哪部分是没有排序的 //找到其中一个需要排序的元素 //这个元素 就是从第二个元素开始,到最后一个元素都是这个需要排序的元素 //利用循环就可以标志出来 //i循环控制 每次需要插入的元素,一旦需要插入的元素控制好了, //间接已经将数组分成了2部分,下标小于当前的(左边的),是排序好的序列 $len = count($arr); for($i=0;$i<$len-1;++$i){ //获得当前需要比较的元素的值 $tmp = $arr[$i]; //内层循环控制比较并且插入 for($j=$i-1;$j>=0;$j--){ //$arr[$i];//需要插入的元素; $arr[$j];//需要比较的元素 if($tmp<$arr[$j]){ //发现插入的元素要小,交换位置 //后边的元素与前面的元素互换。 $arr[$j+1] = $arr[$j]; $arr[$j] = $tmp; }else{ //如果碰到不需要移动的 //由于是已经排号的,则前面就不需要在排序了 break; } } } return $arr;}//快速排序function quickSort($arr){ $len = count($arr); if($len <= 1){ return $arr; } //选择一个flag $flag = $arr[0]; //遍历 除了flag之外的所有元素,按照大小关系放入两个数组内 $left = array(); $right = array(); //初始化两个数组一个小于的一个大于的 for($i=1;$i<$len;++$i){ if($flag > $arr[$i]){ //放入左边数组 $left[] = $arr[$i]; }else{ //放入右边数组 $right[] = $arr[$i]; } } //在分别对左边和右边的数组进行相同的排序处理方式 //递归调用这个函数 $left = quickSort($left); $right = quickSort($right); //合并左边,标尺,右边 return array_merge($left,$flag,$right);}
0 0
- php四种排序
- PHP四种排序
- php 四种排序
- php 四种排序算法
- php四种排序方法
- php四种排序算法
- PHP四种排序方法
- 四种排序方式php
- PHP 四种排序方法
- php四种排序算法
- php常用的四种排序算法
- php常用的四种排序算法
- PHP实现四种基本排序算法
- PHP中的四种基本排序算法
- php实现四种基本排序算法
- PHP实现四种基本排序算法
- 四种排序算法PHP实现类
- PHP实现四种基本排序算法
- Java之String、StringBuffer、StringBuilder
- 关于jsoup的select()
- ThreadPoolExecutor(一)——简介
- npm 私服(下)
- Spark 官方文档(5)——Spark SQL,DataFrames和Datasets 指南
- PHP四种排序
- Android Studio 如何导出和导入自己的常用设置,避免重复制造轮子。加快开发速度
- linux make: **** 报错
- DNS解析过程
- mingw QT5.5.1转移到MSVC2010 QT5.5.1问题集锦
- 【原创】跟踪vdsldr.exe启动过程
- SEO优化流程图文整合详解
- Java提取域名或URL中的根域名
- jdk1.7.0_79\bin\java.exe'' finished with non-zero exit value 1