我的Lomuto Partition Sort的后半部分无效

时间:2015-11-25 10:55:58

标签: algorithm sorting quicksort

我似乎无法使我的排序算法起作用。分区工作得很好,但我不能让递归部分工作。我知道问题是我的条件值开始递归不能正常工作,但我无法弄清楚我会把它放在哪里。

    var partition  = function(arr, i_lo, i_hi) {
  var pivot = arr[i_hi];
  var i = i_lo 
  for (var j = i_lo; j < i_hi; j++) {
    if (arr[j] <= pivot) {   
        var swap = arr[i];
        arr[i] = arr[j]; 
        arr[j] = swap; 
        i++ 
    }
  }
  var swap = arr[i];
  arr[i] = arr[i_hi]
  arr[i_hi] = swap;
  return i;
 }

//1 3 9 8 2 7 5              
var quickSort = function(arr, i_lo, i_hi) {
    console.log(arr[i_lo], arr[i_hi])
    if (arr[i_lo] < arr[i_hi]) {
        var p = partition(arr, i_lo, i_hi); 
        arr = quickSort(arr, i_lo, p-1); 
        arr = quickSort(arr, p + 1, i_hi);
        console.log(arr);
    }
   return arr;
}

console.log(quickSort(arr, 0, arr.length-1))

0 个答案:

没有答案