有关数组排序封装的函数

1,冒泡的方式进行排序。

  默认为升序:
  参数个数2个:
  sortArr(arr,["asc"||"desc"]) 
  参数1:需要我们排序的数组;
  参数2:指定为升序或者降序(asc:升序,默认。desc:降序)

function sortArr(arrArgs, sortType = "asc") {
            if (!Array.isArray(arrArgs) || !arrArgs.length != 0) {
                return;
            }
            let arr = [...arrArgs];
            for (let j = 1, all = arr.length; j < all; j++) {
                for (let i = 0; i < arr.length; i++) {
                    if (sortType == "asc") {
                        if (arr[i] > arr[i + 1]) {
                            let tmp = arr[i];
                            arr[i] = arr[i + 1];
                            arr[i + 1] = tmp;
                        }
                    } else if (sortType == "desc") {
                        if (arr[i] < arr[i + 1]) {
                            let tmp = arr[i];
                            arr[i] = arr[i + 1];
                            arr[i + 1] = tmp;
                        }
                    }

                }
            }
            return arr;
        }
2,快速排序的方法
  参数:arr:需要排序的数组,sort:true为降序,false为升序(默认)
        function sortFast(arr,sort=false){
            if (arr.length<=1){return arr}
            var midIndex=Math.floor(arr.length/2)
            var mid=arr.splice(midIndex,1)[0];
            var left=[];var right=[];
            for(var i=0;i<arr.length;i++){
                if(arr[i]<=mid){
                    left.push(arr[i])
                }else{
                    right.push(arr[i])
                }
            }
            if(sort){
                return sortFast(right,sort).concat([mid],sortFast(left,sort)) 
            }else{
                return sortFast(left,sort).concat([mid],sortFast(right,sort))
            }
        }

 

posted @ 2019-11-15 15:27  不靠谱设计  阅读(273)  评论(0编辑  收藏  举报