快速排序--简洁的JAVA/PHP实现
2018-02-02 16:52
302 查看
目前网上好多快速排序的代码例子,但是写的良莠不齐,不好理解,而且有一些写的比较复杂,分成了两三个函数。
本着简洁好记的原则,整理了下各语言的快排代码
不过两种语言都是很好记的,原理什么的就多看书理解吧。
//修改了array_push($left,$arr[$i])语句
本着简洁好记的原则,整理了下各语言的快排代码
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])语句
相关文章推荐
- 快速排序(php实现)
- 排序算法复习(Java实现)(二): 插入,冒泡,选择,Shell,快速排序
- Java 常用排序算法实现--快速排序、插入排序、选择、冒泡
- 快速排序java实现
- 快速排序--Java实现
- 排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- 排序算法复习(Java实现):插入,冒泡,选择,Shell,快速排序, 归并排序,堆排序,桶式排序,基数排序
- java实现快速排序
- 快速排序Java实现和Javascript实现
- 排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- java(Merge) 实现归并排序,快速排序
- java实现的冒泡、选择、快速排序
- java实现快速排序
- 快速排序java实现
- 算法-快速排序-java实现
- 快速排序的PHP实现 Quick Sort
- 快速排序Java实现
- 【排序系列】快速排序java实现
- Java下实现快速排序
- 快速排序JAVA实现