快速排序算法的PHP与JQuery简单实现

快速排序(以下简称快排)算法的PHP与JQuery简单实现

1.简介:

  • 1.快排的本质是冒泡排序(Bubble Sort)的优化;
  • 2.快排的排序效率在同为O(N*logN)的几种排序方法中效率较高;
  • 3.为了便于说明,这里将以数组为例,实际应用可灵活拓展;

2.核心思想:

  • 1.选择一个基本元素作为参照值,通常选择为第一位或中间一位;
  • 2.以基本元素为参照,将数组分割为两个区间:一个区间A全部大于该值,一个区间B全部小于该值;
  • 3.再分别对AB区间重复上述1,2操作,直到再无可被拆分的元素;
  • 4.整合区间碎片,即得目标对象;

PHP Demo:

public function fsort($a_array) {
// 初始化分隔区间
$a_left = array();
$a_right = array();
// 设置终止条件
if (isset($a_array[0])) {
    $o_flag = $a_array[0];
}
if (!isset($a_array[1])) {
    return $a_array;
}
// 分割目标对象
for ($i = 0; $i < count($a_array); $i++) { 
    if ($a_array[$i] < $o_flag) {
        $a_left[] = $a_array[$i];
    }
    if ($a_array[$i] > $o_flag) {
        $a_right[] = $a_array[$i];
    }
}
// 递归处理分割后的两个区间
$a_left = $this->fsort($a_left);
$a_left[] = $o_flag;
$a_right = $this->fsort($a_right);
return array_merge($a_left, $a_right);
}

JQuery Demo:

var qSort = function(array){
// 初始化分隔区间
var left = [],
    right = [];
// 设置终止条件
if (array[0]) {
    var flag = array[0];
}
if (!array[1]) {
    return array;
}
// 分割目标对象
for (i = 0; i < array.length; i++) { 
    if (array[i] < flag) {
        left.push(array[i]);
    }
    if (array[i] > flag) {
        right.push(array[i]);
    }
}
// 递归处理分割后的两个区间
left = qSort(left);
left.push(flag);
right = qSort(right);
return $.merge(left, right);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 写在前边:这篇文章又臭又长,纯属个人无聊总结之作,如果您恰好看见了,有恰好有兴趣,建议您找个空闲时间阅读。 [TO...
    John_Tsemin阅读 7,270评论 2 5
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 10,589评论 0 52
  • 在小的时候,我可能不知道母爱是什么,而如今,我渐渐长大了,在过程中我慢慢的明白了母爱到底是什么,品尝到了只有母亲才...
    初念吖_L阅读 25,943评论 0 3
  • 两性情感是个自私的东西,男女关系一旦开始,都是会有占有欲的。 总会不自由主觉得:你是我的了,我是你的了。 此时要是...
    萱小蕾阅读 1,534评论 0 0
  • 用隐喻照亮自己第四天:如果我是一种动物,我是一只小小鸟。 我是一只小小鸟,可以飞往任何我想去的地方 我是一只小小鸟...
    孙苹阅读 1,885评论 0 0