精华内容
下载资源
问答
  • 我利用的就是JS数组的索引来排序的,大家都知道,索引就是从0开始,然后依次递增的。好了,废话少说,开始撸了。我们来上完整的代码:var arr = [1,4,2,5,21,3,44,12];//要排序数组。var res = [];//要返...
    45881e2a8271e5f8519370b7c90aa3eb.png

    如果你想要对数组排序,可能会去百度去搜,于是有很多人教你用冒泡,什么二分插入排序、堆排序,如果不太懂其中的代码意思,很难看明白。来,今天我来教大家一个骚操作。

    我利用的就是JS数组的索引来排序的,大家都知道,索引就是从0开始,然后依次递增的。好了,废话少说,开始撸了。

    我们来上完整的代码:

    var arr = [1,4,2,5,21,3,44,12];//要排序的数组。var res = [];//要返回的排序后的数组。var arr1 = [];//中间用到的过渡数组arr.forEach(a=>{arr1[a] = 1;});arr1.forEach((r,index)=>{if(r === 1){res.push(index);//通过push默认是是升序,如果想降序可以采用unshift方法,或者在最后将数组反转一下即可。}})console.log(res);

    arr.forEach(a=>{//这一步很关键,我们把要排序的数组的每一项当作了中间过渡数组的索引,并赋值为1(这里不一定要是1,给一个特定的值就行)

    arr1[a] = 1;

    });

    这时候arr1 的结果为: [empty, 1, 1, 1, 1, empty × 7, 1, empty × 8, 1, empty × 22, 1, empty × 10, 1]

    这时候中间过渡数组arr1就有数据了,但是这个数组中有很多undefined,这时候我们再做最后的排除就好了。

    写在最后:有人可能会提出来,如果数组中有重复项,那这种排序是不是不行了,当然可以, 做下处理,把重复的先拿到,重复了几次,然后在最后的结果数组中通过splice(index,0,item);对数组进行插入操作即可。

    47a88225ee5cbaf85c86a3ab9a578c2f.gif

    技术总结:

    1. 这个就是巧用了数组的索引,默认就是一个从小到大的排序的特性。这种方法简单易懂。
    2. 数组的基本方法的使用,像forEach push unshift reverse splice(这个splice可以做删除,插入,修改) 等。
    展开全文
  • 我利用的就是JS数组的索引来排序的,大家都知道,索引就是从0开始,然后依次递增的。好了,废话少说,开始撸了。我们来上完整的代码:var arr = [1,4,2,5,21,3,44,12];//要排序数组。var res = [];//要返...
    015ffded02a2eee2928398d0bcf851fa.png

    如果你想要对数组排序,可能会去百度去搜,于是有很多人教你用冒泡,什么二分插入排序、堆排序,如果不太懂其中的代码意思,很难看明白。来,今天我来教大家一个骚操作。

    我利用的就是JS数组的索引来排序的,大家都知道,索引就是从0开始,然后依次递增的。好了,废话少说,开始撸了。

    我们来上完整的代码:

    var arr = [1,4,2,5,21,3,44,12];//要排序的数组。var res = [];//要返回的排序后的数组。var arr1 = [];//中间用到的过渡数组arr.forEach(a=>{arr1[a] = 1;});arr1.forEach((r,index)=>{if(r === 1){res.push(index);//通过push默认是是升序,如果想降序可以采用unshift方法,或者在最后将数组反转一下即可。}})console.log(res);

    arr.forEach(a=>{//这一步很关键,我们把要排序的数组的每一项当作了中间过渡数组的索引,并赋值为1(这里不一定要是1,给一个特定的值就行)

    arr1[a] = 1;

    });

    这时候arr1 的结果为: [empty, 1, 1, 1, 1, empty × 7, 1, empty × 8, 1, empty × 22, 1, empty × 10, 1]

    这时候中间过渡数组arr1就有数据了,但是这个数组中有很多undefined,这时候我们再做最后的排除就好了。

    写在最后:有人可能会提出来,如果数组中有重复项,那这种排序是不是不行了,当然可以, 做下处理,把重复的先拿到,重复了几次,然后在最后的结果数组中通过splice(index,0,item);对数组进行插入操作即可。

    2ce26c6d32642af461def84b3e1d7068.gif

    技术总结:

    1. 这个就是巧用了数组的索引,默认就是一个从小到大的排序的特性。这种方法简单易懂。
    2. 数组的基本方法的使用,像forEach push unshift reverse splice(这个splice可以做删除,插入,修改) 等。
    展开全文
  • js数组快速排序方法

    2020-04-14 17:47:07
    js数组快速排序方法 function quickSort(arr) { if (arr.length <= 1) { return arr; } var pivotIndex = Math.floor(arr.length / 2); var pivot = arr.splice(pivotIndex, 1)[0]; var left = []; ...

    js数组快速排序方法

    普通数组排序

    function quickSort(arr) {
    		if (arr.length <= 1) {
    			return arr;
    		}
    		var pivotIndex = Math.floor(arr.length / 2);
    		var pivot = arr.splice(pivotIndex, 1)[0];
    		var left = [];
    		var right = [];
    		for (var i = 0; i < arr.length; i++) {
    			if (arr[i] < pivot) {
    				left.push(arr[i]);
    			} else {
    				right.push(arr[i]);
    			}
    		}
    		return quickSort(left).concat([arr.splice(pivotIndex, 1)[0]], quickSort(right));
    	}
    

    对象数组排序
    arr是数组参数,type是对象数组中根据排序的字段参数,String类型

    function quickSort(arr, type) {
    		if (arr.length <= 1) {
    			return arr;
    		}
    		var pivotIndex = Math.floor(arr.length / 2);
    		var pivot = arr.splice(pivotIndex, 1)[0];
    		var left = [];
    		var right = [];
    		for (var i = 0; i < arr.length; i++) {
    			if (arr[i][type] < pivot[type]) {
    				left.push(arr[i]);
    			} else {
    				right.push(arr[i]);
    			}
    		}
    		return quickSort(left,type).concat([pivot], quickSort(right,type));
    	}
    
    展开全文
  • JS数组快速排序

    2021-02-17 19:28:03
    一、找出数组的中间下标mIndex,因为可能不是整数,所以使用Math.floor()向下取整 二、通过中间下标获取数组中中间下标的值mVal 三、创建左右两个空数组,小于mVal的值放进左数组,大于mVal的值放入右数组 四、采用...

    一、找出数组的中间下标mIndex,因为可能不是整数,所以使用Math.floor()向下取整
    二、通过中间下标获取数组中中间下标的值mVal
    三、创建左右两个空数组,小于mVal的值放进左数组,大于mVal的值放入右数组
    四、采用函数递归的形式依次填充左右数组
    五、使用concat方法拼接并返回新数组

           var arr = [4,56,12,435,32,7,8,90,1,2,3,54,56];
    
            function qSort(arr){
            	//如果数组长度是1,直接return,不需要排序
                if(arr.length <= 1) return arr;
                var mIndex = Math.floor(arr.length - 1 / 2);
                var mVal = arr.splice(mIndex,1);
                var lArr = [], rArr=[];
                for(var i = 0; i< arr.length ; i++){
                    if(arr[i] < mVal){
                        lArr.push(arr[i]);
                    }else{
                        rArr.push(arr[i]);
                    }
                }
                return qSort(lArr).concat(mVal,qSort(rArr));
            }
            console.log(qSort(arr)); 
    

    在这里插入图片描述

    展开全文
  • js数组快速排序-算法

    2021-01-30 17:22:24
    构思 ...第三步:对左右数组进行排序,(前提数组长度大于等于2) 第四步:整合数组就行 代码如下 var arr=[32,45,78,9,1,6]; function f(arr) { //先找一个基点32 ,都32小的放入左数组,比32大的
  • js 数组快速排序算法

    2019-10-30 20:52:17
    之前看了一下百度百科的快速排序算法,所以现在就想写下加深点印象。代码在最下方,前面是我个人理解。 二, 看图说话 我这个图是在百度百科上拉取的,百度百科是动态的,我的不能动抱歉,要看原图地址的来这,我...
  • js数组快速排序

    千次阅读 2017-12-09 16:51:32
    快速排序就是找基准,小的放左边,大的放右边,并把左右递归 var arr = [1,8,2,5,14,2,4,8,10,32,45,3]; console.log(sort(arr, "min")) console.log(sort(arr, "max")) function sort(arr, type) { var arr_len ...
  • 请使用javascript写出数组快速排序代码 <script> function quiktSort(arr){ var left =[],right=[]; if(arr.length<1){ return arr; } //求数组的长度的一半 var index = Math.floor(arr....
  • JS 数组快速排序的三种方式使用双循环冒泡排序使用递归函数使用sort方法粗暴又简洁 使用双循环冒泡排序 var arr = [6,7,34,23,78,23,9,787,1] for(let i = 0; i < arr.length; i++) { for (let j=0; j < arr...
  • 快速排序 arr:[]排序的数组 type:true 小到大 false大到小 filed:如过比的是对象里面的谋个值,则传字段 */ export function listSort(obj: any): Array { const { arr, type = true, filed = false } = obj; const...
  • js数组快速排序/去重

    2016-02-29 17:52:00
    快速排序 思路: (1)在数据集之中,选择一个元素作为”基准”(pivot)。(2)所有小于”基准”的元素,都移到”基准”的左边;所有大于”基准”的元素,都移到”基准”的右边。(3)对”基准”左边和右边的两个...
  • 1.快速排序 var arr = [1, 2, 5, 6, 3, 1, 4]; function mySort(arr) { if (arr.length <= 1) { return arr; } // 获取中间值的索引 ...
  • 主要为大家详细介绍了js实现数组冒泡排序、快速排序的原理,感兴趣的小伙伴们可以参考一下
  • 在对js数组进行排序的时候,常见的排序方法有冒泡排序、sort排序、快速排序和插入排序。冒泡排序对于刚开始接触开发的小伙伴有些陌生,本文主要向大家介绍可以对js数组进行重新排序的冒泡排序。1、冒泡排序实质将...
  • 用递归实现数组快速排序,思路: 1、先找出数组中 中间的数 2、创建左边、右边的空数组 3、将数组中的每个数与中间的数字相比较,如果小,就放到新创建的左边的数组中,如果大,就放到新创建的右边的数组中; 4、...
  • quickSort(arr,parm,sortsc) { if(arr.length < 1) {//如果数组就是一项,那么可以直接返回 return arr; } let centerIndex = Math.floor(arr.length / 2);//获取数组中间的索引 ...
  • 1、冒泡排序 //第一种 function bubblesort(ary){ for(var i=0;i<ary.length-1;i++){ for(var j=0;j<ary.length-1-i;j++){ if(ary[j] > ary[j+1]) {//如果前面的数...
  • 实习了好久,大概用了半年ng2了吧,突然被同事问到js排序问题,一时竟有些懵逼,回来就温故一下,希望自己不忘初心,加油加油! 冒泡排序:  随便从数组中拿一位数和后一位比较,如果是想从小到大排序,那么就...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 498
精华内容 199
关键字:

数组快速排序js