不确定使用quicksort

时间:2019-03-09 00:38:14

标签: c++

我正在为一个学校做项目,并提供了快速排序功能的代码。我们必须编写一个程序来比较通过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

0 个答案:

没有答案