您的位置:首页 > 编程语言 > PHP开发

快速排序--简洁的JAVA/PHP实现

2018-02-02 16:52 302 查看
目前网上好多快速排序的代码例子,但是写的良莠不齐,不好理解,而且有一些写的比较复杂,分成了两三个函数。
本着简洁好记的原则,整理了下各语言的快排代码

JAVA

public static void sort(int[] arr,int low,int high){
int l = low;
int h = high;
int key = arr[l];

while(l<h){
//大于key说明大的在后面,位置正确
while(l<h&&arr[h]>key){
h--;
}
if(l<h){
int temp = arr[h];
arr[h] = arr[l];
arr[l] = temp;
}
//小于key说明小的在前面,符合从小到大排序规则
while(l<h&&arr[l]<=key){
l++;
}
if(l<h){
int temp = arr[h];
arr[h] = arr[l];
arr[l] = temp;
}
}
//毫无疑问,递归最省代码
if(l>low){
sort(arr,low,l-1);
}
if(h<high){
sort(arr,h+1,high);
}
}

php

<?php
function QuickSort($arr){
$length = count($arr);//获取数组元素数
if($length<=1)
return $arr;//排序结束
$left=$right=array();
for($i=1;$i<$length;$i++){
if($arr[$i]<$arr[0]){
array_push($left,$arr[$i]);
}else{
array_push($right,$arr[$i]);
}
}
$left = QuickSort($left);
$right = QuickSort($right);
return array_merge($left,array($arr[0]),$right);
}

?>

总结

没错,PHP就是这么简单粗暴,然而java的效率是PHP远远追不上的,就算PHP7.0已经提升了很大的效率了。
不过两种语言都是很好记的,原理什么的就多看书理解吧。

//修改了array_push($left,$arr[$i])语句
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: