बबल सॉर्ट सबसे सरल सॉर्टिंग एल्गोरिदम में से एक है जिसका उपयोग आसन्न तत्वों की तुलना करके डेटा को सॉर्ट करने के लिए किया जाता है। सभी तत्वों की चरणों में तुलना की जाती है। पहला चरण अंत में सबसे बड़ा मान रखता है, दूसरा चरण दूसरे सबसे बड़े तत्व को दूसरे अंतिम स्थान पर रखता है और इसी तरह जब तक पूरी सूची को क्रमबद्ध नहीं किया जाता है।
बबल सॉर्ट एल्गोरिथम
-
int arr[5]={ 5,4,2,1,3 };
-
इंट आई, जे;
-
अनुक्रमणिका i=0 से i<सरणी आकार
. तक ट्रैवर्स-
अनुक्रमणिका j=0 से सरणी आकार - i - 1
. तक ट्रैवर्स -
अगर गिरफ्तारी [i]> गिरफ्तारी [जे] गिरफ्तारी के साथ स्वैप गिरफ्तारी [i] [जे]
-
-
अंत
पुनरावर्ती बबल सॉर्ट
-
यदि सरणी की लंबाई 1 है तो वापस लौटें
-
एक बार सरणी को ट्रैवर्स करें और अंत में सबसे बड़े तत्व को ठीक करें
-
अंतिम तत्व को छोड़कर शेष सरणी के लिए चरण 2 को पुनरावर्ती रूप से निष्पादित करें
उदाहरण
इनपुट - एआर [] ={ 5,7,2,3,1,4}; लंबाई=6
आउटपुट - क्रमबद्ध सरणी:1 2 3 4 5 7
स्पष्टीकरण -
प्रथम पास5 7 2 3 1 4 → स्वैप → 5 2 7 3 1 45 2 7 3 1 4 → स्वैप → 5 2 3 7 1 45 2 3 7 1 4 → स्वैप → 5 2 3 1 7 45 2 3 1 7 4 → स्वैप → 5 2 3 1 4 7दूसरा पास5 2 3 1 4 7 → स्वैप → 2 5 3 1 4 72 5 3 1 4 7 → स्वैप → 2 3 5 1 4 72 3 5 1 4 7 → स्वैप → 2 3 1 5 4 72 3 1 5 4 7 → स्वैप → 2 3 1 4 5 7तीसरा पास2 3 1 4 5 7 → स्वैप → 2 1 3 4 5 72 1 3 4 5 7 कोई स्वैप नहींचौथा पास2 1 3 4 5 7 → स्वैप → 1 2 3 4 5 71 2 3 4 5 7 आगे के पुनरावृत्तियों में कोई स्वैप नहीं
इनपुट − Arr[] ={ 1, 2, 3, 3, 2 };
आउटपुट - क्रमबद्ध सरणी:1 2 2 3 3
स्पष्टीकरण -
प्रथम पास1 2 3 3 2 → स्वैप → 1 2 3 2 31 2 3 2 3 → स्वैप → 1 2 2 3 31 2 2 3 3 आगे के पुनरावृत्तियों में कोई स्वैप नहींदूसरा पास1 2 2 3 3 आगे के पुनरावृत्तियों में कोई स्वैप नहीं है। पूर्व>नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
बबल प्रकार के पुनरावर्ती दृष्टिकोण में, आधार मामला सरणी लंबाई =1 है। अन्यथा लूप के लिए एकल का उपयोग करके सरणी को पार करें और तदनुसार तत्वों को स्वैप करें।
-
इनपुट ऐरे Arr[] और लंबाई को उसमें तत्वों की संख्या के रूप में लें।
-
फ़ंक्शन recurbublSort(int arr[], int len) सरणी और उसकी लंबाई लेता है और बबल सॉर्ट का उपयोग करके सरणी को पुनरावर्ती रूप से सॉर्ट करता है।
-
एक परिवर्तनशील अस्थायी लें।
-
यदि सरणी की लंबाई 1 है तो शून्य लौटें।
-
अन्यथा लूप के लिए सिंगल का उपयोग करके सरणी को पार करें और प्रत्येक तत्व arr[i]>arr[i+1] के लिए, उन तत्वों को स्वैप करें।
-
अस्थायी सेट करें [i], गिरफ्तार [i] =गिरफ्तारी [i + 1] और गिरफ्तारी [i + 1] =अस्थायी।
-
अब लंबाई में 1 की कमी करें क्योंकि पिछले लूप ने सबसे बड़े तत्व को अंतिम स्थान पर रखा है।
-
recurbublSort(arr,len) करने के लिए पुनरावर्ती कॉल करें।
-
सभी कॉलों के अंत में, जब लेन 1 हो जाती है तो हम रिकर्सन से बाहर आ जाएंगे और सरणी को सॉर्ट किया जाएगा।
-
मुख्य के अंदर क्रमबद्ध सरणी को प्रिंट करें।
उदाहरण
#includevoid recurbublSort(int arr[], int len){ int temp; अगर (लेन ==1) {वापसी; } के लिए (int i=0; i arr[i+1]){ temp=arr[i]; गिरफ्तारी [i] =गिरफ्तार [i+1]; गिरफ्तारी [i+1]=अस्थायी; } } लेन =लेन-1; recurbublSort(arr, len);}int main(){ int Arr[] ={21, 34, 20, 31, 78, 43, 66}; int लंबाई =sizeof(Arr)/sizeof(Arr[0]); recurbublSort (गिरफ्तारी, लंबाई); प्रिंटफ ("क्रमबद्ध सरणी:"); for(int i=0;i आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा
क्रमबद्ध सरणी:20 21 31 34 43 66 78