बबल सॉर्ट न केवल सबसे अधिक माना जाता हैतेजी से विधि, इसके अलावा, यह सबसे धीमी क्रम वाले तरीकों की सूची को बंद कर देता है। हालाँकि, इसके फायदे भी हैं। तो, बुलबुला विधि द्वारा छंटनी समस्या का सबसे तार्किक और प्राकृतिक समाधान है, यदि आपको तत्वों को एक निश्चित क्रम में व्यवस्थित करने की आवश्यकता है। एक सामान्य व्यक्ति, उदाहरण के लिए, इसे मैन्युअल रूप से उपयोग करेगा - बस अंतर्ज्ञान द्वारा।
विधि का नाम एक सादृश्य का उपयोग करके आविष्कार किया गया थापानी में हवा के बुलबुले। यह एक रूपक है। जैसे छोटे हवा के बुलबुले ऊपर की ओर उठते हैं - आखिरकार, उनका घनत्व किसी भी तरल (इस मामले में, पानी) से अधिक होता है, इसलिए एक सरणी के प्रत्येक तत्व, यह जितना छोटा होता है, उतना ही धीरे-धीरे संख्याओं की सूची की शुरुआत में अपना रास्ता बनाता है।
बबल सॉर्ट इस प्रकार किया जाता है:
इससे भी कम, भविष्य के कार्यक्रम का एल्गोरिथ्म निम्नानुसार लिखा जा सकता है:
सबसे सरल कार्यान्वयन इस प्रकार है:
प्रक्रिया Sortirovka_Puzirkom;
शुरुआत
के लिए चक्र जे से nachalnii_index इससे पहले konechii_index;
के लिए चक्र मैं से nachalnii_index इससे पहले konechii_index -1;
अगर मासिव [i]> मासिव [i + 1] (पहला तत्व दूसरे से बड़ा है), फिर:
(स्थानों में मूल्यों को बदलें);
समाप्त
बेशक, यहाँ सादगी केवल बढ़ती हैस्थिति: एल्गोरिथ्म जितना सरल है, उतनी ही कमियां इसमें दिखाई देती हैं। एक छोटे से सरणी के लिए भी समय की खपत बहुत अधिक है (यहां सापेक्षता खेल में आती है: एक आम आदमी के लिए, समय की मात्रा छोटी लग सकती है, लेकिन प्रोग्रामर के व्यवसाय में, हर दूसरे या एक मिलीसेकंड भी मायने रखता है)।
एक बेहतर कार्यान्वयन की आवश्यकता थी। उदाहरण के लिए, स्थानों में सरणी में मूल्यों के आदान-प्रदान को ध्यान में रखते हुए:
प्रक्रिया Sortirovka_Puzirkom;
शुरुआत
sortirovka = सत्य;
साइकिल अलविदा sortirovka = सत्य;
sortirovka = असत्य;
के लिए चक्र मैं से nachalnii_index इससे पहले konechii_index -1;
अगर मासिव [i]> मासिव [i + 1] (पहला तत्व दूसरे से बड़ा है), फिर:
(स्थानों में स्वैप तत्व);
sortirovka = सत्य; (संकेत दिया कि विनिमय किया गया था)।
समाप्त।
मुख्य नुकसान प्रक्रिया की अवधि है। बबल सॉर्ट एल्गोरिथ्म को कितना समय लगता है?
निष्पादन समय की गणना सरणी में संख्याओं के वर्ग से की जाती है - अंतिम परिणाम इसके लिए आनुपातिक है।
सबसे खराब स्थिति में, सरणी का पता लगाया जाएगाकई बार के रूप में वहाँ तत्वों शून्य से एक मूल्य हैं। ऐसा इसलिए है क्योंकि अंत में तुलना करने के लिए कुछ भी नहीं होने के साथ केवल एक तत्व बचा है, और सरणी के माध्यम से अंतिम पास एक बेकार कार्रवाई बन जाती है।
इसके अलावा, सरल द्वारा छँटाई की विधिएक्सचेंज, जैसा कि यह भी कहा जाता है, केवल छोटे सरणियों के लिए। इसकी सहायता से बड़ी मात्रा में डेटा संसाधित नहीं किया जा सकता है: परिणाम या तो त्रुटियों या प्रोग्राम में खराबी होगा।
बबल सॉर्ट को समझना बहुत आसान है।तकनीकी विश्वविद्यालयों के पाठ्यक्रम में, सरणी तत्वों के क्रम का अध्ययन करते समय, इसे पास करने वाला पहला व्यक्ति होता है। विधि को डेल्फी प्रोग्रामिंग भाषा (डी (डेल्फी) और सी / सी ++ (सी / सी प्लस प्लस) दोनों में आसानी से लागू किया जाता है, मूल्यों को सही क्रम में और पास्कल में व्यवस्थित करने के लिए एक अविश्वसनीय रूप से सरल एल्गोरिदम। छँटाई शुरुआती लोगों के लिए आदर्श है।
कमियों के कारण, एल्गोरिथ्म का उपयोग पाठ्येतर उद्देश्यों के लिए नहीं किया जाता है।
सरणी का प्रारंभिक दृश्य 8 22 4 74 44 37 1 7
चरण 1 8 22 4 74 44 37 1 7
8 22 4 74 44 1 37 7
8 22 4 74 1 44 37 7
8 22 4 1 74 44 37 7
8 22 1 4 74 44 37 7
8 1 22 4 74 44 37 7
1 8 22 4 74 44 37 7
चरण 2 1 8 22 4 74 44 7 37
1 8 22 4 74 7 44 37
1 8 22 4 7 74 44 37
1 8 22 4 7 74 44 37
1 8 4 22 7 74 44 37
1 4 8 22 7 74 44 37
चरण 3 1 4 8 22 7 74 37 44
1 4 8 22 7 37 74 44
1 4 8 22 7 37 74 44
1 4 8 7 22 37 74 44
1 4 7 8 22 37 74 44
चरण 4 1 4 7 8 22 37 44 74
1 4 7 8 22 37 44 74
1 4 7 8 22 37 44 74
1 4 7 8 22 37 44 74
चरण 5 1 4 7 8 22 37 44 74
1 4 7 8 22 37 44 74
1 4 7 8 22 37 44 74
चरण 6 1 4 7 8 22 37 44 74
1 4 7 8 22 37 44 74
चरण 7 1 4 7 8 22 37 44 74
उदाहरण:
कास्ट कोल_मास = 10;
var massiv: सरणी [1..kol_mas] पूर्णांक का;
ए, बी, के: पूर्णांक;
शुरू
writeln ("इनपुट", kol_mas, "सरणी के तत्व");
a के लिए: = 1 से kol_mas do readln (massiv [a]);
a: = 1 से kol_mas-1 के लिए प्रारंभ करें
b के लिए: = a + 1 से kol_mas do start
अगर मासिव [ए]> मासिव [बी] तो शुरू करें
के: = मासिव [ए]; मासिव [ए]: = मासिव [बी]; मासिव [बी]: = के;
समाप्त;
समाप्त;
समाप्त;
राइटलन ("सॉर्ट के बाद");
a के लिए: = 1 से kol_mas do writeln (massiv [a]);
समाप्त।
उदाहरण:
#शामिल
#शामिल
int मुख्य (int argc, char * argv [])
{
इंट मासिव [8] = {36, 697, 73, 82, 68, 12, 183, 88}, आई, एफएफ;
के लिये (;;) {
एफएफ = 0;
के लिए (i = 7; i> 0; i -) {
अगर (मासिव [i] <मैसिव [i-1]) {
स्वैप (मासिव [i], मासिव [i-1]);
एफएफ ++;
}
}
अगर (एफएफ == 0) ब्रेक;
}
गेटच (); // स्क्रीन देरी
वापसी 0;
}.