繁体   English   中英

使用javascript中的快速排序,根据另一个数组对一个数组进行排序

[英]Sort one array according to the other array using quick sort in javascript

我想按照c升序对a进行排序。 c通过这种方法排序,但是a没有, a在代码末尾只有四个未排序的元素。 我应该做些什么改变?

var a = ['e','b','d','a','f','g','c'];
function quick_Sort(origArray,a) {
 var i;
 var length = origArray.length;
 if (origArray.length <= 1) { 
    return [origArray, a];
 } else {

    var left = [];
    var right = [];
    var left1 = [];
    var right1 = [];
    var newArray = [];
    var newArray1 = [];
    var pivot = origArray.pop();
    var pivot1 = a.pop();

    for (i = 0; i < length-1; i++) {
        if (origArray[i] <= pivot) {
            left.push(origArray[i]);
    left1.push(a[i]);
        } else {
            right.push(origArray[i]);
    right1.push(a[i]);
        }
    }
    return [newArray.concat((quick_Sort(left, left1)[0]), pivot, (quick_Sort(right, right1)[0])),newArray1.concat((quick_Sort(left, left1)[1]), pivot1, (quick_Sort(right, right1)[1]))];
 }
}

var c = [3, 0, 2, 5, -1, 4, 1 ];

console.log("Original array: " + c);
console.log("Original array: " + a);
var e = quick_Sort(c,a);
c = e[0];
a = e[1];
console.log("Sorted array: " + c);
console.log("Sorted array: " + a);

如果要排序a从相应价值c ,您可以:

 var a = ['e','b','d','a','f','g','c']; var c = [3, 0, 2, 5, -1, 4, 1 ]; var [sortedA, sortedC] = a.map((v,i) => [ v, c[i] ] ) //Pair the a and c .sort((x,y)=>x[1] - y[1]) //Sort the array based on the c value .reduce((c,v) => { c[0].push( v[0] ); c[1].push( v[1] ); return c; }, [[],[]]); //Seperate the a and c console.log( sortedA ); console.log( sortedC ); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM