Java教程

数组快速排序

本文主要是介绍数组快速排序,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

举个栗子:

对下面数组进行排序:

let originArray = [[45, 26, 78, [77, 23], 66], 24, 63,63, [45, 10], 17, 31, 96, 50];

分治法;

function quickSort(arr){
        arr = arr.join(",").split(",").map(Number);
        var recursion = function(targetArray){
            let baseIndex = Math.floor(targetArray.length/2),
                miduleNumer,
                leftArray = [],
                miduleArray = [],
                rightArray = [];
            if(targetArray.length <= 1) return targetArray;
            miduleNumer = targetArray.splice(baseIndex,1)[0];
            for(let i = 0;i < targetArray.length;i++){
                if(targetArray[i] > miduleNumer){
                    leftArray.push(targetArray[i]);
                }else if(targetArray[i] < miduleNumer){
                    rightArray.push(targetArray[i]);
                }else{
                    miduleArray.push(targetArray[i]);
                }
            } 
            return [...recursion(leftArray),...recursion(miduleArray),...recursion([miduleNumer]),...recursion(rightArray)];
        }
        return recursion(arr);
    }

二:

function quickSort(arr){
         arr = arr.join(",").split(",").map(Number);
         let resultArr = [];
         function recursion(targetArr){
           if(targetArr.length > 0){
            let minNum = Math.min(...targetArr);
            targetArr.splice(targetArr.indexOf(minNum),1);
          resultArr.unshift(minNum);
            recursion(targetArr);
          }
        }
        recursion(arr);
        return resultArr;
     }
     console.log(quickSort(targetArray));

 

.

这篇关于数组快速排序的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!