Cette preuve est une preuve par induction, et va comme suit:
P (n) est l'affirmation selon laquelle "Tri rapide trie correctement chaque tableau d'entrée de longueur n".
Cas de base: chaque tableau d'entrée de longueur 1 est déjà trié (P (1) tient)
Étape inductive: fixer n => 2. Fixer un tableau d'entrée de longueur n.
Besoin de montrer: si P (k) est valable pour tout k <n, alors P (n) est également valable
Il trace ensuite un tableau A partitionné autour d'un pivot p. Il dessine donc p et appelle la partie du tableau qui est <p comme 1ère partie, et la partie qui est> p est la deuxième partie. La longueur de la partie 1 = k1, et la longueur de la partie 2 est k2. Par la preuve d'exactitude du sous-programme de partition (prouvée précédemment), le pivot p se termine dans la bonne position.
Par hypothèse inductive: les 1ère, 2e parties sont triées correctement par appels récursifs. (En utilisant P (K1), P (k2))
Donc: après des appels récursifs, tout le tableau est correctement trié.
QED
Ma confusion : j'ai beaucoup de mal à voir exactement comment cela prouve l'exactitude de celui-ci. Nous supposons donc que P (k) est vrai pour tous les nombres naturels k <n.
La plupart des preuves d'induction que j'avais vues jusqu'à présent vont quelque chose comme: Prouver le cas de base et montrer que P (n) => P (n + 1). Ils impliquaient généralement une sorte de manipulation algébrique. Cette preuve semble très différente, et je ne comprends pas comment lui appliquer le concept d'Induction. Je peux quelque peu raisonner que l'exactitude du sous-programme de partition est la clé. Le raisonnement pour son exactitude est le suivant: Nous savons que chaque appel récursif, il partitionnera le tableau autour d'un pivot. Ce pivot sera alors dans sa position légitime. Ensuite, chaque sous-réseau sera encore partitionné autour d'un pivot, et ce pivot sera alors dans sa position légitime. Cela continue indéfiniment jusqu'à ce que vous obteniez un sous-tableau de longueur 1, qui est trié de manière triviale.
Mais alors nous ne supposons pas que P (k) est valable pour tous les k <n .... nous le montrons réellement (puisque le sous-programme de partition placera toujours un élément dans sa position légitime.) Ne supposons-nous pas que P (k) est valable pour tout k