Bonjour,


J'étudie l'algorithme par insertion récursif tel que le voici :

Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
// Recursive function to sort an array using 
    // insertion sort 
    static void insertionSortRecursive(int arr[], int n) 
    { 
        // Base case 
        if (n <= 1) 
            return; 
 
        // Sort first n-1 elements 
        insertionSortRecursive( arr, n-1 ); 
 
        // Insert last element at its correct position 
        // in sorted array. 
        int last = arr[n-1]; 
        int j = n-2; 
 
        /* Move elements of arr[0..i-1], that are 
          greater than key, to one position ahead 
          of their current position */
        while (j >= 0 && arr[j] > last) 
        { 
            arr[j+1] = arr[j]; 
            j--; 
        } 
        arr[j+1] = last; 
    } 
 
    // Driver Method 
    public static void main(String[] args) 
    { 
        int arr[] = {12, 11, 13, 5, 6}; 
 
        insertionSortRecursive(arr, arr.length); 
 
        System.out.println(Arrays.toString(arr)); 
    } 
}

Et je ne comprends pas pourquoi l'auteur utilise cinq fois l'appel de la méthode insertionSortRecursive( arr, n-1 ) ligne 09 ?

Que fait la machine ensuite de ces cinq insertionSortRecursive( arr, n-1 ). Restent-ils dans la mémoire ou bien servent-ils pour déplacer un simple curseur ?

Merci pour toute réponse,

Cordialement,

Nino Adrien.