[英]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.