但是有不少的書本講得并不是很清楚,而且不同的教材的實現方式也不盡相同,
我這里將最簡單的快速排序的思路寫出來供大家參考。
希望不管是使用什么語言都能從這個簡單的代碼里很方便的掌握快排思路與編寫方式
復制代碼 代碼如下:
function quick_sort(list, start, end) {  
      if (start < end) {  
        var pivotpos = partition(list, start, end);   //找出快排的基數  
        quick_sort(list, start, pivotpos - 1);        //將左邊的快排一次  
        quick_sort(list, pivotpos + 1, end);          //將右邊的快排一次  
      }  
    }  
      
    //將一個序列調整成以基數為分割的兩個區域,一邊全都不小于基數,一邊全都不大于基數  
    function partition(list, start, end) {  
      var pivotpos = start;  
      var pivot = list[start];  
      var tmp;  
      for(var i = start + 1; i <= end; i ++) {  
        if (list[i] < pivot) {  
          tmp = list[i];  
          pivotpos += 1;  
          list[i] = list[pivotpos];  
          list[pivotpos] = tmp;  
        }  
      }  
      tmp = list[start];  
      list[start] = list[pivotpos];  
      list[pivotpos] = tmp;  
      return pivotpos;  
    }  
      
    var list = [8,2,4,65,2,4,7,1,9,0,2,34,12];  
    quick_sort(list, 0, list.length);
新聞熱點
疑難解答
圖片精選