1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
   | function triFusion(tab) {
  var rep = [];
  var tabL = tab.length;
  if(tabL < 2) {
    //console.log("Tableau déjà trié, il n'y a rien à faire!" +tab);
    return tab;
  } else {
    var q = Math.ceil(tabL / 2);
    var left = triFusion(tab.slice(0,q));
    console.log("left: " +left);
    var right = triFusion(tab.slice(q, tabL));
    return fusion(left, right); 
  }
}
 
function fusion(tabLeft, tabRight) {
  var ans = [];
  var tabLeftL = tabLeft.length;
  var tabRightL = tabRight.length;
  var cpteurL = 0;
  var cpteurR = 0;
 
  while((cpteurL < tabLeftL) && (cpteurR < tabRightL)) {
    if(tabLeft[cpteurL] > tabRight[cpteurR]) {
      ans.push(tabLeft[cpteurL]);
      cpteurL += 1;
 
    } else {
      ans.push(tabRight[cpteurR]);
      cpteurR +=1;
 
    }
  } 
  for(var i = cpteurL; i < tabLeftL; i++) {
    ans.push(tabLeft[i]);
  }
 
  for(var j = cpteurR; j < tabRightL; j++) {
    ans.push(tabRight[j]);
  }
 
  return ans;
}
 
var tableau = [9, 0, 1, 9, 3, 5, 4, 7, 2, 6, 4, 1, 0, 3, 9, 8, 7, 5, 1, 3, 9, 8, 5, 3, 0, 1, 3];
var reponse = triFusion(tableau);
console.log("la reponse: " +reponse); | 
Partager