/ / प्रोग्रामिंग में छंटाई के तरीके: बुलबुला सॉर्ट

प्रोग्रामिंग में छँटाई तकनीक: बुलबुला सॉर्ट

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

यह असामान्य नाम कहां से आया?

बबल शॅाट

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

एल्गोरिथम विवरण

बबल सॉर्ट इस प्रकार किया जाता है:

  • पहला पास: संख्या के सरणी के तत्वों को दो द्वारा लिया जाता है और जोड़े में तुलना भी की जाती है। यदि किसी भी दो तत्वों में पहला मूल्य दूसरे से अधिक है, तो कार्यक्रम उनके स्थानों का आदान-प्रदान करता है;
  • इसलिए, सबसे बड़ी संख्या सरणी के अंत में समाप्त होती है। जबकि अन्य सभी तत्व बने हुए हैं, जैसा कि वे एक अराजक क्रम में थे और अभी भी छंटाई की आवश्यकता है;
  • इसलिए, दूसरा पास आवश्यक है: यह पिछले एक (पहले से वर्णित) के साथ सादृश्य द्वारा बनाया गया है और इसकी तुलना की संख्या है - न्यूनतम एक;
  • पास नंबर तीन में दूसरे की तुलना में एक कम और पहले की तुलना में दो कम है। आदि;
  • संक्षेप में, प्रत्येक पास के पास (सरणी में कुल मान, एक विशिष्ट संख्या) माइनस (पास संख्या) तुलना है।

बबल शॅाट

इससे भी कम, भविष्य के कार्यक्रम का एल्गोरिथ्म निम्नानुसार लिखा जा सकता है:

  • संख्याओं की एक सरणी की जाँच की जाती है जब तक कि कोई भी दो संख्याएँ न मिलें, और उनमें से दूसरी संख्या पहले से अधिक होनी चाहिए;
  • कार्यक्रम एक-दूसरे के संबंध में गलत तरीके से स्थित सरणी के तत्वों को इंटरचेंज करता है।

Pseudocode वर्णित एल्गोरिथ्म पर आधारित है

सबसे सरल कार्यान्वयन इस प्रकार है:

प्रक्रिया 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;

}.

इसे पसंद किया:
0
लोकप्रिय पोस्ट
आध्यात्मिक विकास
भोजन
y