php:快速排序的两种方法
2017-05-27 22:07
288 查看
//$data=array(23,16,2,36,34,3,9,67,54);
//$ref=$data[0]; //$count=count($data)-1; //qksort($data,0,$count);
//$arr=other_qksort($data); //echo "<pre>"; //var_dump($arr); //echo "</pre>"; function quickSort($arr){ $len = count($arr); if($len <= 1) { return $arr; } $key = $arr[0]; $left_arr = array(); $right_arr = array(); for($i=1; $i<$len; $i++){ if($arr[$i] <= $key){ $left_arr[] = $arr[$i]; } else { $right_arr[] = $arr[$i]; } } $left_arr = quickSort($left_arr); $right_arr = quickSort($right_arr); return array_merge($left_arr, array($key), $right_arr); }第二种: //快速排序 function qksort(&$data,$i,$j){ if($i<$j){ $rkey=partition($data,$i,$j); qksort($data,$i,$rkey-1); qksort($data,$rkey+1,$j); } //return $data; } function partition(&$data,$i,$j){ $r=$data[$i]; //$count=count($data); while($i<$j){ while($i<$j && $data[$j]>$r) $j--; $rf=$data[$i]; $data[$i]=$data[$j]; $data[$j]=$rf; while($i<$j && $data[$i]<$r) $i++; $rf=$data[$i]; $data[$i]=$data[$j]; $data[$j]=$rf; } $data[$i]=$r; return $i; }
//$ref=$data[0]; //$count=count($data)-1; //qksort($data,0,$count);
//$arr=other_qksort($data); //echo "<pre>"; //var_dump($arr); //echo "</pre>"; function quickSort($arr){ $len = count($arr); if($len <= 1) { return $arr; } $key = $arr[0]; $left_arr = array(); $right_arr = array(); for($i=1; $i<$len; $i++){ if($arr[$i] <= $key){ $left_arr[] = $arr[$i]; } else { $right_arr[] = $arr[$i]; } } $left_arr = quickSort($left_arr); $right_arr = quickSort($right_arr); return array_merge($left_arr, array($key), $right_arr); }第二种: //快速排序 function qksort(&$data,$i,$j){ if($i<$j){ $rkey=partition($data,$i,$j); qksort($data,$i,$rkey-1); qksort($data,$rkey+1,$j); } //return $data; } function partition(&$data,$i,$j){ $r=$data[$i]; //$count=count($data); while($i<$j){ while($i<$j && $data[$j]>$r) $j--; $rf=$data[$i]; $data[$i]=$data[$j]; $data[$j]=$rf; while($i<$j && $data[$i]<$r) $i++; $rf=$data[$i]; $data[$i]=$data[$j]; $data[$j]=$rf; } $data[$i]=$r; return $i; }
相关文章推荐
- PHP基于ICU扩展intl快速实现汉字转拼音及按拼音首字母分组排序的方法
- PHP实现对多维数组按照某个键值排序的两种解决方法
- 快速排序 两种方法
- 快速排序的两种方法
- PHP实现对多维数组按照某个键值排序的两种解决方法
- 快速排序的两种实现方法
- 详谈排序算法之交换类排序(两种方法实现快速排序【思路一致】)
- 快速掌握PHP多维数组排序方法
- 快速排序的两种改进方法算法及topK问题求解
- PHP生成静态页面的两种方法
- PHP中二维数组的排序方法
- 快速排序List的通用方法
- 让PHP支持页面回退的两种方法
- PHP访问ACCESS数据库的两种方法
- 快速的清除SQLServer日志的两种方法
- 快速清除SQLServer日志的两种方法
- PHP中调用Java类的两种方法
- PHP生成静态页面的两种方法
- 用两种方法快速简单的实现窗口淡入淡出
- 让PHP支持页面回退的两种方法[转]