heberoxx 发表于 2017-7-2 19:52:32

排序:堆排序

//堆排序
function exchange(arr,n){
    var temp = arr;
    if((arr>arr) || (arr>arr)){
      if(arr != undefined) {
            if (arr <= arr) {
                arr = arr;
                arr = temp;
                return 0;
            }
            else {
                arr = arr;
                arr = temp;
                return 1;
            }
      }
      else{
            arr = arr;
            arr = temp;
            return 0;
      }
    }
}
function heap_sort(array){
    var arr = array.concat();
    var lenAll = arr.length;
    var len = parseInt(lenAll/2);
    for(var i = len; i > 0; i--){
      var key = i;
      var flag;
      while(key < lenAll){
            flag = exchange(arr,key);
            if(flag == 0) {
                key = 2 * key;
            }
            else{
                key = 2 * key + 1;
            }
      }
    }
    return arr;
}
function heap_print(array){
    var result = [];
    var arr = array.concat();
    var len = array.length;
    for(var i = 0; i < len; i++){
      arr = heap_sort(arr);
      var temp = arr.concat();
      var first = arr.shift();
      var last = arr.pop();
      arr.unshift(last);
      arr.push(first);
      result.push(arr.pop());
    }
    alert(result);
}
页: [1]
查看完整版本: 排序:堆排序