Mini-cours sur les algorithmes

Boucles

Tri à bulle

function triAbulles(tab){
  let tmp = 0 // variable temporaire créée pour permettre la permutation
  for (let i = 0; i < tab.length-1; i++){
    // Boucle entre le premier et l'avant dernier élément

    for (let j = i+1; j < tab.length; j++){
      // Boucle entre le second élément et le dernier élément

      // Première comparaison = entre le premier et second élément
      // Dernière comparaison = entre l'avant dernier et le dernier élément

      if (tab[i] > tab[j]){ // "<" = par ordre décroissant
        tmp = tab[i]
        tab[i] = tab[j]
        tab[j] = tmp
      }
    }
  }
  return tab // retourne le tableau trié
}

function trier(){ // appelée lors du clic
  let tab_old = document.getElementById("tab_old").value.split(",")
   for (let i=0; i<tab_old.length; i++){
     // convertir toute string en nombre (entier)
     tab_old[i] = parseInt(tab_old[i],10)
   }
  let tab_new = triAbulles(tab_old)
  document.getElementById("tab_new").value = tab_new.toString()
}

Le but est de tester le tri à bulle (et non de tester ce qui est dans le champ)

Tri de clés

Chaque article a un identifiant et un nom (bic, crayon, gomme, ...). La liste est un ensemble de clé:valeur, séparé par une virgule

Code JS
function triAbulles2(tab,tab2){
  let tmp = 0, tmp2 = ""
  for (let i = 0; i < tab.length-1; i++){
    for (let j = i+1; j < tab.length; j++){
      if (tab[i] > tab[j]){ // "<" = par ordre décroissant
        tmp = tab[i];    tmp2 = tab2[i]
        tab[i] = tab[j]; tab2[i] = tab2[j]
        tab[j] = tmp;    tab2[j] = tmp2
      }
    }
  }
  tabx = [tab,tab2]
  return tabx // retourne un tableau (composé de deux tableaux)
}

function trier2(){
  let tabKeys = [], tabValues = [], tab = []
  let tab_old2 = document.getElementById("tab_old2").value.split(",")
  for (let i=0; i < tab_old2.length; i++){
    tab = (tab_old2[i]).split(":")
    tabKeys.push( parseInt(tab[0],10) ); tabValues.push(tab[1]);
  }
  let tabx = triAbulles2(tabKeys,tabValues)
  let msg = ""
  for (let i=0; i < tabx[0].length; i++){
    msg += tabx[0][i]+":"+tabx[1][i]+","
  }
  msg = msg.substr(0, msg.length-1) // enlève le dernier caractère de msg
  document.getElementById("tab_new2").value = msg
}