Free tutorials & notes in Hindi & English · Clean code examples 🧰 मुफ़्त PDF और फ़ोटो टूल्स →
📘 Lesson  ·  Lesson 77

Bubble Sort

Bubble Sort का Concept और Invariant

Bubble sort adjacent elements compare करता है, गलत order वाले pair को swap करता है और passes दोहराता है। Ascending pass के बाद active range का largest element final position पर पहुंच जाता है; अगला pass sorted suffix को छोड़ सकता है।

मुख्य नियम

values[i] > values[i+1] होने पर ही swap करें। Strict comparison equal records का relative order बचाता है।

Selection और insertion से तुलना के लिए यह lesson पढ़ें।

Pass-by-Pass Trace

PassSwapsPass के बाद sequence
15↔1, 5↔4, 5↔21 4 2 5 8
24↔21 2 4 5 8
3कोई नहीं1 2 4 5 8

तीसरे pass में swap नहीं हुआ, इसलिए optimized algorithm तुरंत stop करता है।

Algorithm

हर pass में active range के adjacent pairs compare करें
out-of-order pair swap करें
pass के बाद end एक position घटाएं
किसी pass में swap न हो तो stop करें

Empty और single-element vector में loop नहीं चलता, इसलिए result natural रूप से सही रहता है।

Complete C++ Program

void bubble_sort(std::vector<int>& values) {
    for (std::size_t end = values.size(); end > 1; --end) {
        bool swapped = false;
        for (std::size_t i = 0; i + 1 < end; ++i) {
            if (values[i] > values[i + 1]) {
                std::swap(values[i], values[i + 1]);
                swapped = true;
            }
        }
        if (!swapped) break;
    }
}
Input: 5 1 4 2 8 Sorted: 1 2 4 5 8

Full program में <iostream>, <utility> और <vector> include करें। Reference parameter caller के vector को in-place sort करता है।

Early-Exit Optimization

हर outer pass से पहले swapped=false करें। Swap होने पर true करें। Pass के अंत में false रहे तो सभी adjacent pairs ordered हैं, इसलिए best case Θ(n) हो जाता है। Last swap का index रखकर अगला boundary और छोटा किया जा सकता है, पर worst case Θ(n²) ही रहता है।

Complexity और Stability

PropertyResult
BestΘ(n), early exit के साथ
Average/WorstΘ(n²)
Extra spaceO(1)
Stableहाँ, strict > पर
In-placeहाँ

Swap input elements को खोता या बनाता नहीं। हर pass largest active value fix करता है; no-swap pass पूरे sequence के ordered होने का प्रमाण है।

कब Use करें

Teaching, visualization और tiny inputs में उपयोगी है। Large general data के लिए std::sort, stable order के लिए std::stable_sort, और Θ(n log n) अध्ययन के लिए merge sort बेहतर हैं। STL algorithms भी पढ़ें।

Mistakes, Testing और Practice

  • i+1 < end रखें, वरना out-of-bounds access होगा।
  • swapped एक pass में एक बार reset करें।
  • Stability के लिए >= नहीं, > लें।
  • Sorted, reverse, duplicates, negative, empty और one-element cases test करें।

Practice: comparisons/swaps count करें, descending version लिखें और equal-key records से stability verify करें।

Authoritative संदर्भ

Definition और complexity इन sources से verify की गई हैं। अगला topic: sorting और searching।

अक्सर पूछे जाने वाले प्रश्न (FAQ)

Bubble sort की time complexity क्या है?
Optimized version sorted input पर Θ(n), जबकि average और worst case में Θ(n²) time लेता है। Auxiliary space O(1) है।
क्या bubble sort stable है?
हाँ, जब swap केवल left value के strictly greater होने पर किया जाए। Equal values swap करने से stability टूट सकती है।
क्या bubble sort in-place है?
हाँ। यह original sequence में elements rearrange करता है और कुछ variables ही लेता है, इसलिए extra space O(1) है।
swapped flag क्यों लगाते हैं?
किसी पूरे pass में swap न हो तो सभी adjacent pairs ordered हैं। Flag algorithm को वहीं रोक देता है।
Production C++ में bubble sort लेना चाहिए?
General data के लिए प्रायः std::sort लें; equal order बचाना हो तो std::stable_sort। Bubble sort teaching और बहुत छोटे inputs के लिए उपयोगी है।
← Back to C++ Tutorial
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।

अगला topicSelection & Insertion Sort आपकी प्रगति: 77 / 81 (95%) · Lesson 78 / 81 आगे बढ़ें →

यह lesson कैसा लगा?

आपकी राय से हम content और बेहतर बनाते हैं।

अपना review और सुझाव लिखें (वैकल्पिक)

Review approve होने के बाद आपका नाम और शहर इसके साथ public दिख सकते हैं। Email या phone न लिखें।

▶ CodingEasily on YouTube

Video से सीखें – आसान Hindi में

चुनी हुई video: RDBMS भाग 3 – Class XI Commerce IT

▶ Channel subscribe करें