php实现几种排序
2015-08-13 17:57
585 查看
第一:冒牌排序
第二:选择排序
每一次遍历找到最小的放到前边去
第三:插入排序
四:快速排序
<?php error_reporting(0); $arr=array(0,5,-1,9,3); //将数据从小排序 function bubblesort(&$arr) { 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; } } } print_r($arr); echo "内层"; } bubblesort($arr); print_r($arr); ?>
第二:选择排序
每一次遍历找到最小的放到前边去
<?php error_reporting(0); $arr=array(0,5,-1,9,3); function selectsort(&$arr) { for($i=0;$i<count($arr)-1;$i++) { $min=$arr[$i]; //记录下标值 $minindex=$i; for($j=$i+1;$j<count($arr);$j++) { if($min>$arr[$j]) { $min=$arr[$j]; $minindex=$j; } } $temp=$arr[$i]; $arr[$i]=$arr[$minindex]; $arr[$minindex]=$temp; } print_r($arr); } selectsort($arr); print_r($arr); ?>
第三:插入排序
<?php error_reporting(0); $arr=array(0,5,-1,9,3); function insertsort(&$arr) { //默认下标为0的为有序的 for($i=1;$i<count($arr);$i++) { $insertval=$arr[$i]; //准备先和这个比较 $insertindex=$i-1; while($insertindex>=0&&$insertval<$arr[$insertindex]) { $arr[$insertindex+1]=$arr[$insertindex];//注意移位 $insertindex--; } if($arr[$insertindex+1]!=$insertval)//优化同值交换 $arr[$insertindex+1]=$insertval; } } insertsort($arr); print_r($arr); ?>
四:快速排序
<?php error_reporting(0); $arr=array(); for($i=0;$i<200000;$i++) { $arr1=rand(0, 3000); $arr[$i]=$arr1; } date_default_timezone_set('Asia/Shanghai'); function quicksort($left,$right,&$arr) { $l=$left; $r=$right; $pivot=$arr[($left+$right)/2]; $temp=0; while($l<$r) { while($arr[$l]<$pivot) $l++; while($arr[$r]>$pivot) $r--; if($l>=$r) break; $temp=$arr[$l]; $arr[$l]=$arr[$r]; $arr[$r]=$temp; if($arr[$l]==$pivot) --$r; if($arr[$r]==$pivot) ++$l; } if($l==$r) { $l++; $r--; } if($left<$r) quicksort($left, $r, $arr); if($right>$l) quicksort($l, $right, $arr); } $today=date('Y-n-d G:i:s' ); echo "排序之前时间:".$today; quicksort(0, count($arr)-1,$arr); echo "排序之后时间:".$today."<br>"; //print_r($arr); ?>
相关文章推荐
- 优雅的使用 PhpStorm 来开发 Laravel 项目
- Laravel SoapClient
- selectpicker下拉多选框ajax异步或者提前赋值=》默认值(2)
- php回传ajax数据
- PHP文件操作
- PHP Client for Mysql Binlog
- 如何使用PHP上传文件,上传图片,php上传教程,php表单文件上传教程
- 华三交换机mstp生成树配置
- (转)基于PHP——简单的WSDL的创建(WSDL篇)
- 转载:setAttribute和setParameter方法的区别
- 使用PHP QR Code生成二维码
- PHP菜鸟手记——如何解决无法装载动态链接库的问题
- win8和win7下解决php5.3和5.4、5.5等不能加载php_curl.dll的终极解决办法
- PHP学习总结(四)
- phpstorm快捷键
- Yii2 搜索
- php去掉换行
- 文本编辑器EditPlus
- php数组
- yii2 邮件发送笔记