अनुकूली प्रकार

एक सोर्टिंग एल्गोरिदम अनुकूली सॉर्ट वर्ग में आता है यदि वह अपने इनपुट में वर्तमान क्रम का लाभ उठाता है। यह इनपुट अनुक्रम में पूर्व-क्रमबद्धता से लाभ उठाता है - या विकार के उपायों की विभिन्न परिभाषाओं के लिए सीमित मात्रा में यादृच्छिकता - और तीव्रता से क्रमबद्ध होता है। अनुकूली सोर्टिंग सामान्यतः वर्तमान सोर्टिंग एल्गोरिदम को संशोधित करके की जाती है।

प्रेरणा
तुलना सॉर्ट  एल्गोरिदम पारंपरिक रूप से समय जटिलता से निपटने के समय  बिग o अंकन (n log n) की एक इष्टतम सीमा प्राप्त करने से निपटते हैं। अनुकूली सॉर्ट ठीक समय प्राप्त करने का प्रयास करने के लिए इनपुट के वर्तमान क्रम का लाभ उठाता है, ताकि एल्गोरिदम द्वारा सॉर्ट करने में लगने वाला समय अनुक्रम के आकार और अनुक्रम में अव्यवस्था का सुचारू रूप से बढ़ता फलन  हो। दूसरे शब्दों में, इनपुट जितना अधिक क्रमबद्ध होगा, उसे उतनी ही तीव्रता से क्रमबद्ध किया जाना चाहिए।

सॉर्टिंग एल्गोरिदम के लिए यह एक आकर्षक विशेषता है क्योंकि व्यवहार में लगभग सॉर्ट किए गए अनुक्रम सामान्य हैं। इस प्रकार, इनपुट में वर्तमान क्रम को ध्यान में रखकर वर्तमान सॉर्ट एल्गोरिदम के निष्पादन में सुधार किया जा सकता है।

ध्यान दें कि सबसे निकृष्ट स्थिति वाले सॉर्टिंग एल्गोरिदम जो सबसे निकृष्ट स्थिति में ठीक निष्पादन करते हैं, विशेष रूप से हीप सॉर्ट और मर्ज़ सॉर्ट, अपने इनपुट के भीतर वर्तमान क्रम को ध्यान में नहीं रखते हैं, यद्यपि मर्ज सॉर्ट की स्थिति में इस कमी को सरलता से जांच कर ठीक किया जा सकता है। यदि बाएं हाथ के समूह का अंतिम अवयव दाएं समूह के पहले अवयव से कम (या बराबर) है, तो उस स्थिति में मर्ज ऑपरेशन को सरल संयोजन द्वारा प्रतिस्थापित किया जा सकता है - एक संशोधन जो एल्गोरिदम को अनुकूली बनाने के दायरे में है.

उदाहरण
अनुकूली सॉर्टिंग एल्गोरिदम का एक उत्कृष्ट उदाहरण स्ट्रेट इंसर्शन सॉर्ट है। इस सॉर्टिंग एल्गोरिदम में, हम इनपुट को बाएं से दाएं स्कैन करते हैं, बार-बार वर्तमान आइटम की स्थिति ढूंढते हैं, और इसे पहले से सॉर्ट किए गए आइटमों की एक सरणी में डालते हैं।

छद्म कोड रूप में, स्ट्रेट इंसर्शन सॉर्ट एल्गोरिदम कुछ इस तरह दिख सकता है (सरणी एक्स शून्य-आधारित है):

'प्रक्रिया' सीधे सम्मिलन सॉर्ट (एक्स): 'for' j := 1 'to' length(X) - 1 'do' टी := एक्स[जे] मैं := जे 'जबकि' i > 0 'और' X[i - 1] > t 'करें' एक्स[आई] := एक्स[आई - 1] मैं := मैं - 1 'अंत' एक्स[आई] := टी 'अंत'

इस एल्गोरिदम के निष्पादन को इनपुट में उलटा (अलग गणित) की संख्या के संदर्भ में वर्णित किया जा सकता है, और फिर $T(n)$ लगभग बराबर होगा $I(A) + (n - 1)$, कहाँ $I(A)$ व्युत्क्रमणों की संख्या है. पूर्व-क्रमबद्धता के इस माप का उपयोग करते हुए - व्युत्क्रमों की संख्या के सापेक्ष होने के कारण - स्ट्रेट इंसर्शन सॉर्ट को सॉर्ट करने में जितना करीब होता है, कम समय लगता है।

अनुकूली सॉर्टिंग एल्गोरिदम के अन्य उदाहरण हैं अनुकूली हीप सॉर्ट, मर्ज सॉर्ट#प्राकृतिक मर्ज सॉर्ट, धैर्य सॉर्ट, शैलसॉर्ट, स्मूथसॉर्ट, spplaysort, टिमसॉर्ट, और कार्टेशियन ट्री#सॉर्टिंग में अनुप्रयोग।

यह भी देखें

 * सोर्टिंग एल्गोरिदम
 * स्मूथसॉर्ट