यह प्रमाण प्रेरण द्वारा एक प्रमाण है, और निम्नानुसार है:
P (n) यह दावा है कि "Quicksort सही ढंग से लंबाई n के हर इनपुट सरणी को सॉर्ट करता है।"
आधार मामला: लंबाई 1 के प्रत्येक इनपुट सरणी को पहले से ही हल किया गया है (P (1) होल्ड)
आगमनात्मक कदम: n => 2 को ठीक करें। लंबाई n के कुछ इनपुट सरणी को ठीक करें।
दिखाने की आवश्यकता है: यदि P (k) सभी k <n के लिए है, तो P (n) भी है
वह फिर एक सरणी खींचता है कुछ पिवट पी के आसपास एक विभाजन। इसलिए वह p को खींचता है, और उस सरणी के भाग को कॉल करता है, जो <p 1 भाग के रूप में है, और जो भाग> p दूसरा भाग है। भाग 1 = k1 की लंबाई, और भाग 2 की लंबाई k2 है। विभाजन उप-रेखा (पूर्व में सिद्ध) के शुद्धता प्रमाण से, धुरी p हवा सही स्थिति में आती है।
आगमनात्मक परिकल्पना द्वारा: 1, 2 भागों को पुनरावर्ती कॉल द्वारा सही ढंग से हल किया जाता है। (P (K1), P (k2) का उपयोग करके)
तो: पुनरावर्ती कॉल के बाद, संपूर्ण सरणी सही ढंग से सॉर्ट की जाती है।
QED
मेरा भ्रम : मुझे यह देखने में बहुत समस्या है कि यह कैसे सही साबित होता है। इसलिए हम मानते हैं कि पी (के) वास्तव में सभी प्राकृतिक संख्याओं के लिए धारण करता है <n।
ज्यादातर इंडक्शन प्रूफ़ मैंने अब तक देखे थे जैसे कुछ: प्रोव बेस केस, और दिखाओ कि P (n) => P (n + 1)। वे आमतौर पर बीजीय हेरफेर के कुछ प्रकार को भी शामिल करते हैं। यह प्रमाण बहुत अलग लगता है, और मुझे समझ में नहीं आता है कि इस पर इंडक्शन की अवधारणा को कैसे लागू किया जाए। मैं कुछ हद तक यह बता सकता हूं कि विभाजन उपखंड की शुद्धता की कुंजी है। तो इसकी शुद्धता के लिए तर्क निम्नानुसार है: हम जानते हैं कि प्रत्येक पुनरावर्ती कॉल, यह एक धुरी के चारों ओर सरणी को विभाजित करेगा। यह धुरी तब अपनी सही स्थिति में होगी। तब प्रत्येक उपप्रकार को एक धुरी के चारों और विभाजित किया जाएगा, और वह धुरी फिर अपनी सही स्थिति में होगी। यह तब तक और आगे बढ़ता है जब तक आपको लंबाई 1 का एक उप-वर्ग नहीं मिलता है, जो कि तुच्छ रूप से क्रमबद्ध है।
लेकिन तब हम यह नहीं मान रहे हैं कि P (k) सभी k <n के लिए है .... हम वास्तव में इसे दिखा रहे हैं (चूंकि विभाजन सबरूटीन हमेशा एक तत्व को उसकी सही स्थिति में रखेगा।) क्या हम यह नहीं मान रहे हैं कि P (k) सभी k के लिए है