top of page
Search
sueveynahugvau

Bubble Sort C++: A Simple and Efficient Sorting Algorithm



Bubble Sort in C++: A Beginner's Guide




If you are learning about sorting algorithms, you might have come across bubble sort. Bubble sort is one of the simplest and most intuitive sorting algorithms that works by repeatedly swapping adjacent elements if they are in the wrong order. In this article, you will learn what bubble sort is, how it works, what is its time complexity, what are its advantages and disadvantages, and how to implement it in C++.


What is bubble sort?




Bubble sort is a sorting algorithm that compares each pair of adjacent elements in an array and swaps them if they are in the wrong order. The algorithm repeats this process until the array is sorted. The name bubble sort comes from the fact that the smaller or larger elements "bubble" to the end of the array after each iteration.




bubble sort c++




How does bubble sort work?




Let's say we want to sort an array of integers in ascending order using bubble sort. Here are the steps we need to follow:


  • Start from the first element of the array and compare it with the second element. If the first element is greater than the second element, swap them.



  • Move to the next pair of elements and compare them. If they are in the wrong order, swap them.



  • Continue this process until we reach the end of the array. At this point, the largest element will be at the last position of the array.



  • Repeat steps 1 to 3 for the remaining unsorted elements, excluding the last element, which is already sorted.



  • Stop when there are no more swaps or when the array is fully sorted.



What is the time complexity of bubble sort?




The time complexity of an algorithm measures how fast it runs based on the size of the input. For bubble sort, we can analyze how many comparisons and swaps it performs in the worst case, average case, and best case scenarios.


  • The worst case scenario for bubble sort occurs when the array is sorted in reverse order. In this case, we need to perform n-1 comparisons and swaps for each of n-1 iterations, where n is the size of the array. Therefore, the worst case time complexity of bubble sort is O(n).



  • The average case scenario for bubble sort occurs when the array is randomly ordered. In this case, we can assume that half of the comparisons result in swaps and half do not. Therefore, the average case time complexity of bubble sort is also O(n).



  • The best case scenario for bubble sort occurs when the array is already sorted. In this case, we only need to perform n-1 comparisons and no swaps for each iteration. Therefore, the best case time complexity of bubble sort is O(n).



What are the advantages and disadvantages of bubble sort?




Bubble sort has some advantages and disadvantages that make it suitable or unsuitable for certain situations. Here are some of them:


The advantages of bubble sort are:


  • It is easy to understand and implement.



  • It does not require extra space to store temporary values.



  • It can detect if the array is already sorted in one pass.




The disadvantages of bubble sort are:


  • It is very slow and inefficient for large arrays.



  • It performs many unnecessary comparisons and swaps even if the array is nearly sorted.



  • It is not stable, meaning it can change the relative order of equal elements.




How to implement bubble sort in C++ How to implement bubble sort in C++?




Now that you know what bubble sort is and how it works, let's see how to implement it in C++. We will show you two versions of the algorithm: a basic one and an optimized one.


Basic implementation




The basic implementation of bubble sort in C++ follows the steps we described earlier. We use a nested for loop to iterate over the array and compare each pair of adjacent elements. We use a temporary variable to swap them if they are in the wrong order. We also use a boolean variable to keep track of whether any swaps occurred in each iteration. If no swaps occurred, we can break out of the loop and return the sorted array.


Code example





using namespace std; // Function to print an array void printArray(int arr[], int size) for (int i = 0; i arr[j + 1]) // If the current element is greater than the next element swap(arr[j], arr[j + 1]); // Swap them using a temporary variable swapped = true; // Set swapped to true if (!swapped) // If no swaps occurred in this iteration break; // Break out of the loop // Driver code int main() int arr[] = 64, 34, 25, 12, 22, 11, 90; // Sample array int size = sizeof(arr) / sizeof(arr[0]); // Size of the array cout


Output explanation




The output of the code example is:


Unsorted array: 64 34 25 12 22 11 90 Sorted array: 11 12 22 25 34 64 90


The code example shows how the bubble sort algorithm sorts the sample array in ascending order. It prints the unsorted and sorted arrays for comparison. You can see how the smaller elements move to the left and the larger elements move to the right after each iteration.


Optimized implementation




The basic implementation of bubble sort can be optimized by using some tricks to reduce the number of comparisons and swaps. One trick is to use a variable to store the last index where a swap occurred in each iteration. This means that all the elements after that index are already sorted and do not need to be compared again. Another trick is to check if the array is already sorted before calling the bubble sort function. This can save time if the array is already sorted or nearly sorted.


bubble sort c++ code


bubble sort c++ example


bubble sort c++ array


bubble sort c++ program


bubble sort c++ vector


bubble sort c++ geeksforgeeks


bubble sort c++ ascending order


bubble sort c++ descending order


bubble sort c++ string


bubble sort c++ algorithm


bubble sort c++ explanation


bubble sort c++ recursion


bubble sort c++ time complexity


bubble sort c++ pointers


bubble sort c++ swap function


bubble sort c++ linked list


bubble sort c++ struct


bubble sort c++ class


bubble sort c++ template


bubble sort c++ function


bubble sort c++ optimization


bubble sort c++ pass by reference


bubble sort c++ dynamic array


bubble sort c++ user input


bubble sort c++ random numbers


bubble sort c++ 2d array


bubble sort c++ objects


bubble sort c++ stl


bubble sort c++ lambda


bubble sort c++ stack overflow


bubble sort c++ tutorialspoint


bubble sort c++ programiz


bubble sort c++ hackerrank


bubble sort c++ leetcode


bubble sort c++ interview questions


bubble sort c++ youtube video


bubble sort c++ pdf file


bubble sort c++ github repository


bubble sort c++ online compiler


bubble sort c++ vs python speed comparison


Code example





using namespace std; // Function to print an array void printArray(int arr[], int size) for (int i = 0; i arr[i + 1]) // If any element is greater than its next element return false; // Return false return true; // Return true if no such element found // Function to implement optimized bubble sort void bubbleSort(int arr[], int size) int lastSwapIndex; // To store the last index where a swap occurred for (int i = size -1 ; i >0 ; i--) // Outer loop for n-1 iterations, starting from the end lastSwapIndex = -1; // Assume no swaps at the beginning for for (int j = 0; j arr[j + 1]) // If the current element is greater than the next element swap(arr[j], arr[j + 1]); // Swap them using a temporary variable lastSwapIndex = j; // Update the last swap index if (lastSwapIndex == -1) // If no swaps occurred in this iteration break; // Break out of the loop i = lastSwapIndex; // Set the outer loop limit to the last swap index // Driver code int main() int arr[] = 64, 34, 25, 12, 22, 11, 90; // Sample array int size = sizeof(arr) / sizeof(arr[0]); // Size of the array cout


Output explanation




The output of the code example is:


Unsorted array: 64 34 25 12 22 11 90 Sorted array: 11 12 22 25 34 64 90


The code example shows how the optimized bubble sort algorithm sorts the sample array in ascending order. It prints the unsorted and sorted arrays for comparison. You can see how the algorithm reduces the number of comparisons and swaps by using the last swap index and the sorted check.


Conclusion




Bubble sort is a simple and easy to understand sorting algorithm that works by repeatedly swapping adjacent elements if they are in the wrong order. However, it is also very slow and inefficient for large or nearly sorted arrays. It has a time complexity of O(n) in the worst and average cases, and O(n) in the best case. It can be optimized by using some tricks to reduce the number of comparisons and swaps. In this article, you learned what bubble sort is, how it works, what is its time complexity, what are its advantages and disadvantages, and how to implement it in C++ using basic and optimized versions.


FAQs




  • What is a sorting algorithm?



A sorting algorithm is a method of arranging a collection of elements in a specific order, such as ascending or descending. Sorting algorithms are useful for organizing data and making it easier to search, analyze, or display.


  • What are some other sorting algorithms besides bubble sort?



Some other common sorting algorithms are selection sort, insertion sort, merge sort, quick sort, heap sort, radix sort, etc. Each algorithm has its own advantages and disadvantages depending on the type and size of the input data.


  • How can I test the performance of bubble sort?



You can test the performance of bubble sort by measuring how long it takes to sort different arrays with different sizes and orders. You can use a timer function or a library to record the start and end times of the sorting process. You can also compare the results with other sorting algorithms to see which one is faster or slower.


  • How can I modify bubble sort to sort in descending order?



You can modify bubble sort to sort in descending order by changing the comparison condition in the inner loop. Instead of swapping elements if they are in ascending order (arr[j] > arr[j + 1]), you can swap them if they are in descending order (arr[j]


  • How can I make bubble sort stable?



You can make bubble sort stable by preserving the relative order of equal elements. To do this, you need to change the comparison condition in the inner loop from greater than (>) to greater than or equal to (>=). This will prevent swapping equal elements and keep them in their original positions.


44f88ac181


1 view0 comments

Recent Posts

See All

Kommentarer


bottom of page