美文网首页
js数组快排的实现原理

js数组快排的实现原理

作者: 来看代码 | 来源:发表于2018-03-15 20:16 被阅读0次

一.我们平时在使用数组的排序的时候,都是调用的js自带的sort()方法;
var arr = [5,1,8,1,2,9,3,4];
console.log(arr.sort()); //[1,1,2,3,4,5,8,9]
二.其实我们自己可以根据一些简单的方法自己实现,主要实现思路如下:
1.在数据集之中找一个基准点(位于目前的数组的中间的那个数值),
2.建立2个数组,分别存储左边和右边的数组,
3.利用递归进行逐次比较,然后拼接数组达到排序的效果。
function quickSort(arr) {
if (arr.length<=1) {
return arr;
}
var num = Math.floor(arr.length / 2),//找到中间值,如果是浮点数,就向下取整
numValue = arr.splice(num, 1)[0]; //找到中间数的值

        var leftArr = [],
            rightArr = [];
        for (var i = 0; i < arr.length; i++) {
            if (arr[i] < numValue) {
                leftArr.push(arr[i]);
            } else{
                rightArr.push(arr[i]);
            }
        }
        //遍历后的2数组,再调用此方法递归遍历
        return quickSort(leftArr).concat([numValue],quickSort(rightArr));
    }
    //调用测试结果
    var new_arr = quickSort(arr);  //[1,1,2,3,4,5,8,9]

相关文章

  • js数组快排的实现原理

    一.我们平时在使用数组的排序的时候,都是调用的js自带的sort()方法;var arr = [5,1,8,1,2...

  • JS实现插入排序、快排、二分查找法

    用JS实现插入排序 用JS实现快排 用JS实现二分查找法

  • js实现快排

    function quick_sort(list, start, end) {if (start < end) {...

  • iOS 面试 - 算法题

    快排的原理 链表和数组的区别是什么?插入和查询的实践复杂度分别是多少? 哈希表是如何实现的?如何解决地址冲突? 排...

  • 算法 -- 排序

    快排 原理 快排利用分治思想。快排的思想是这样的:如果要排序数组中下标从 p 到 r 之间的一组数据,我们选择 p...

  • 算法

    【原创】以下是自己写的某些算法的JS实现 快排 (一) 快排(二) 希尔排序 插排 二分插排 归并排序

  • 快排,递归,非递归,三向切分,去掉边界条件

    快排 快排的思想: 典型的分治,将数组分成两个子数组,并且分别对子数组排序,且子数组的排序也是分治。 快排和归并排...

  • 数组快排

    有空再补描述。

  • 简单的鼠标移动元素近大远小效果

    前置知识:CSS position,js map函数 实现原理: 视觉原理:远处的物体移动慢,近处的物体移动快 实...

  • 深入之数组方法的实现原理

    map的用法和实现原理: map即映射,将原数组映射返回新数组。 用法: 实现原理: filter的用法和实现原理...

网友评论

      本文标题:js数组快排的实现原理

      本文链接:https://www.haomeiwen.com/subject/rxckqftx.html