diff --git a/sorting/optimized_bubble_sort.cpp b/sorting/optimized_bubble_sort.cpp new file mode 100644 index 00000000000..e5141c961ae --- /dev/null +++ b/sorting/optimized_bubble_sort.cpp @@ -0,0 +1,32 @@ +#include +using namespace std; + +void bubbleSort(int arr[], int n) { + bool swapped; + for (int i = 0; i < n - 1; i++) { + swapped = false; + + for (int j = 0; j < n - i - 1; j++) { + if (arr[j] > arr[j + 1]) { + swap(arr[j], arr[j + 1]); + swapped = true; + } + } + + // If no elements were swapped, array is already sorted + if (swapped == false) + break; + } +} + +int main() { + int arr[] = {5, 1, 4, 2, 8}; + int n = sizeof(arr)/sizeof(arr[0]); + + bubbleSort(arr, n); + + for (int i = 0; i < n; i++) + cout << arr[i] << " "; + + return 0; +}