常规排序:冒泡,选择,快速排序
2016-03-10 15:07
459 查看
冒泡排序法
function bubbleSort(&$arr){ $temp = 0; $flag = false; 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; } } if(!$flag) break; $flag = false; } }
选择排序法
function selectSort(&$arr){ $temp = 0; for($i=0;$i<count($arr)-1;$i++){ //假设$i就是最小的数字并记录下标值 $minVal = $arr[$i]; $minIndex = $i; for($j=$i+1;$j<count($arr);$j++){ //从小到大排 if($minVal>$arr[$j]){ $minVal = $arr[$j]; $minIndex = $j; } } $temp = $arr[$i]; $arr[$i] = $arr[$minIndex]; $arr[$minIndex] = $temp; } }
快速排序法1
function insertSort(&$arr){ //先默认下标为0的这个数已经是有序,从第2个开始 for($i=1;$i<count($arr);$i++){ $insertVal = $arr[$i]; //$insertVal是准备插入的数 $insertIndex = $i-1; //准备先和$insertIndex进行比较 //如果这个条件满足,说明我们还没有打到适当的位子 while ($insertIndex>=0 && $insertVal<$arr[$insertIndex]){ //同时把数字后移 $arr[$insertIndex+1] = $arr[$insertIndex]; $insertIndex--; } //插入--这时就给$insertVal找到适当的位子 if(($insertIndex+1)!=$i) $arr[$insertIndex+1]=$insertVal; } }
快速排序法2
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); }
Test…
$arr = array(); for($k=0;$k<=5000;$k++){ $arr[$k]=rand(0,200); } $nowTime = date('Y-m-d H:i:s'); echo 'now time is :'.$nowTime; //selectSort($arr); //insertSort($arr); //bubbleSort($arr); quickSort(0,count($arr)-1,$arr); //print_r($arr); $nowTime = date('Y-m-d H:i:s'); echo '<br />exe after time is:'.$nowTime;
相关文章推荐
- 冒泡排序
- 快速排序
- C#冒泡法排序算法实例分析
- C#快速排序算法实例分析
- C++实现对输入数字组进行排序
- C++快速排序的分析与优化详解
- js实现数组冒泡排序、快速排序原理
- php简单实现快速排序的方法
- Java 快速排序(QuickSort)原理及实现代码
- 快速排序和分治排序介绍
- java 算法之快速排序实现代码
- Java数据结构及算法实例:冒泡排序 Bubble Sort
- c++冒泡排序示例分享
- Java实现快速排序算法(Quicktsort)
- Java中的数组排序方式(快速排序、冒泡排序、选择排序)
- python冒泡排序算法的实现代码
- 快速排序的原理及java代码实现
- C/C++实现快速排序的方法
- python冒泡排序与常用数学计算
- Scala&Java实现快速排序