我正在为一个学校做项目,并提供了快速排序功能的代码。我们必须编写一个程序来比较通过4种不同排序方法完成的通过次数和交换次数。我的前三个工作正常,但是我不确定为什么我的快速排序无法正常工作,我认为这与我传递给函数的开始位置和停止位置有关。我已经尝试了所有我能想到的东西,有时甚至什至不会为quicksort返回值,其他版本只会返回0个循环和交换。这是下面的代码,该版本返回0计数。
var newTab = [], newTaby = [];
for(var i = 0, iLimit = array.length; i < iLimit; i++) {
if(array[i].buyerId) {
newTaby.push(array[i]);
} else {
newTab.push(array[i]);
}
}
newTab.sort((a,b) => {
var aVal = parseInt(a.distance);
var bVal = parseInt(b.distance);
if (aVal===bVal) {
return 0;
} else {
return aVal < bVal ? -1 : 1;
}
});
for(let k = 0; k < newTaby.length; k++){
for(let j = 0; j < newTab.length; j++) {
if(newTaby[k].key5 == newTab[j].key5){
newTab.splice(j+1, 0, newTaby[k])
break;
}
}
}
for(let h=0; h < newTab.length - 1; h++) {
for(let x=h+1; x < newTab.length; x++) {
if (newTab[h].key4 != newTab[x].key4 && parseFloat(newTab[h].distance) >
parseFloat(newTab[x].distance) && newTab[h].log == '1'){
let theGreater = newTab[h];
newTab[h] = newTab[x];
newTab[x] = theGreater;
}
}
}
console.log(newTab) //this will give the sorted array