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