Exercice 7.7: Fusion de deux tableaux Terminé

Consigne

Écrivez un algorithme qui fusionne deux tableaux (déjà existants) dans un troisième, qui devra être trié.
Attention ! On présume que les deux tableaux de départ sont préalablement triés : il est donc irrationnel de faire
une simple concaténation des deux tableaux de départ, puis d'opérer un tri : comme quand on se trouve face à deux
tas de papiers déjà triés et qu'on veut les réunir, il existe une méthode bien plus économique (et donc, bien plus
rationnelle...)

Pseudo code

DEBUT
    tab1 = [0, 4, 5, 6, 7, 8, 10, 11]
    tab2 = [1, 2, 3, 9, 12, 99]
    mergedTab = []

    firstEnded = false
    secEnded = false

    firstIndex = 0
    secIndex = 0

    loop = 0

    TANT QUE(!firstEnded || !secEnded)

        SI (firstEnded || tab1[firstIndex] > tab2[secIndex]) ALORS

            mergedTab[loop] = tab2[secIndex]

            secIndex++

            SI (secIndex === count(tab2)) ALORS
                secEnded = TRUE
            FIN SI
        }
        SINON
            mergedTab[loop] = tab1[firstIndex]

            firstIndex++

            SI (firstIndex === count(tab1))
                    firstEnded = TRUE
            FIN SI
        FIN SI

        loop++
    FIN TANT QUE

    AFFICHER mergedTab
FIN

Conversion

function javascript() {
    let output = document.querySelector('.response-displayer > .codeblock > pre#javascript');
        output.classList.add('show');
    let tab1 = [0, 4, 5, 6, 7, 8, 10, 11];
    let tab2 = [1, 2, 3, 9, 12, 99];
    let mergedTab = [];

    firstEnded = false; // flag for first array
    secEnded = false; // flag for second array

    firstIndex = 0; // index cursor for first array
    secIndex = 0; // index cursor for second array

    loop = 0;

    while (!firstEnded || !secEnded) {

        if (firstEnded || tab1[firstIndex] > tab2[secIndex]) {
    
            mergedTab[loop] = tab2[secIndex];
    
            secIndex++;
    
            if (secIndex === tab2.length) { secEnded = true; }
        }
        else {
            mergedTab[loop] = tab1[firstIndex];
    
            firstIndex++;
    
            if (firstIndex === tab1.length) { firstEnded = true; }
        }
    
        loop++;
    }

    output.innerHTML = "[JS]: " + mergedTab;
}
function jquery() {
    $('.response-displayer > .codeblock > pre').removeClass('show')
    let $output = $('.response-displayer > .codeblock > pre#jquery').addClass('show')
    let tab1 = [0, 4, 5, 6, 7, 8, 10, 11];
    let tab2 = [1, 2, 3, 9, 12, 99];
    let mergedTab = [];

    firstEnded = false; // flag for first array
    secEnded = false; // flag for second array

    firstIndex = 0; // index cursor for first array
    secIndex = 0; // index cursor for second array

    loop = 0;

    while (!firstEnded || !secEnded) {

        if (firstEnded || tab1[firstIndex] > tab2[secIndex]) {
    
            mergedTab[loop] = tab2[secIndex];
    
            secIndex++;
    
            if (secIndex === tab2.length) { secEnded = true; }
        }
        else {
            mergedTab[loop] = tab1[firstIndex];
    
            firstIndex++;
    
            if (firstIndex === tab1.length) { firstEnded = true; }
        }
    
        loop++;
    }

    let toDisplay = "";
    mergedTab.forEach(function(tab, index) {
        toDisplay += tab
        if (index < (mergedTab.length - 1 )) { toDisplay += ", "; }
    })

    $output.html("[jQuery]: " + toDisplay);

}
<?php

$tab1 = [0, 4, 5, 6, 7, 8, 10, 11];
$tab2 = [1, 2, 3, 9, 12, 99];
$mergedTab = [];

$firstEnded = false; // flag for first array
$secEnded = false; // flag for second array

$firstIndex = 0; // index cursor for first array
$secIndex = 0; // index cursor for second array

$loop = 0;

while (!$firstEnded || !$secEnded) {

    if ($firstEnded || $tab1[$firstIndex] > $tab2[$secIndex]) {

        $mergedTab[$loop] = $tab2[$secIndex];

        $secIndex++;

        if ($secIndex === count($tab2)) { $secEnded = TRUE; }
    }
    else {
        $mergedTab[$loop] = $tab1[$firstIndex];

        $firstIndex++;

        if ($firstIndex === count($tab1)) { $firstEnded = TRUE; }
    }

    $loop++;
}

print_r($mergedTab);

Choisissez un language:

Entrez les valeurs nécessaires:

Résultat du code

Le résultat s'affichera après l'exécution du code.