Bu kanıt, tümevarımın kanıtıdır ve aşağıdaki gibi devam eder:
P (n) "Quicksort, n uzunluğundaki her girdi dizisini doğru bir şekilde sıralar."
Temel durum: 1 uzunluktaki her giriş dizisi zaten sıralanmıştır (P (1) tutar)
Endüktif adım: n => 2'yi düzeltin. N uzunluğunda bir girdi dizisini düzeltin.
Gösterilmesi gereken: P (k) tüm k <n için tutarsa, P (n) de tutar
Daha sonra, bazı p p noktalarının etrafında bölünmüş bir A dizisi çizer. Böylece p çizer ve dizinin 1. kısım olarak <p olan kısmını çağırır ve ikinci kısım olan> p kısmı. Bölüm 1'in uzunluğu = k1 ve bölüm 2'nin uzunluğu k2'dir. Bölüm alt yordamının (daha önce kanıtlanmıştır) doğruluk kanıtıyla, pivot doğru konumda sarılır.
Endüktif hipotezle: 1., 2. bölümler yinelemeli çağrılarla doğru şekilde sıralanır. (P (K1), P (k2) kullanarak)
Yani: özyinelemeli çağrılardan sonra, tüm dizi doğru şekilde sıralanır.
QED
Karışıklık : Bunun doğru olduğunu nasıl kanıtladığını görmekte bir çok sorunum var. Bu yüzden P (k) 'nin gerçekten tüm doğal sayılar için geçerli olduğunu varsayıyoruz k <n.
Şimdiye kadar gördüğüm indüksiyon kanıtlarının çoğu şuna benzer: Temel durumu kanıtlayın ve P (n) => P (n + 1) olduğunu gösterin. Genellikle bir çeşit cebirsel manipülasyon da içeriyordu. Bu kanıt çok farklı görünüyor ve İndüksiyon kavramının nasıl uygulanacağını anlamıyorum. Partition alt programının doğruluğunun anahtar olması için bir şekilde neden olabilirim. Doğruluğunun sebebi de şöyle: Her yinelemeli çağrının diziyi bir pivot etrafında bölümleyeceğini biliyoruz. Bu pivot daha sonra doğru konumda olacaktır. Daha sonra her alt dizi, bir pivotun etrafında daha fazla bölünecek ve bu pivot daha sonra doğru konumunda olacaktır. Bu, önemsiz bir şekilde sıralanan 1 uzunluğunda bir alt dizi elde edene kadar devam eder.
Ama sonra P (k) 'nin tüm k <n için geçerli olduğunu varsaymıyoruz ... aslında GÖSTERİYORUZ (Bölüm alt programı her zaman bir elemanı doğru pozisyonuna yerleştireceğinden.) (k) tüm k için geçerlidir