#include <iostream>
using namespace std;
// Function to print n elements of the array arr
void printArray(int arr[], int n)
{
for (int i = 0; i < n; i++)
cout << arr[i] << " ";
}
// perform bubble sort on arr[]
void bubbleSort(int arr[], int n)
{
// run (n - 1) times
for (int k = 0; k < n - 1; k++)
{
// flag to detect that the list is already sorted
bool sorted = true;
// last k items are already sorted, so inner loop can
// avoid looking at the last k items
for (int i = 0; i < n - 1 - k; i++)
{
if (arr[i] > arr[i + 1])
{
swap(arr[i], arr[i + 1]);
sorted = false;
}
}
// stop algorithm if the inner loop didn’t do any swap
if (sorted)
break;
}
}
int main()
{
int arr[] = { 3, 5, 8, 4, 1, 9, -2 };
int n = sizeof(arr) / sizeof(arr[0]);
bubbleSort(arr, n);
printArray(arr, n);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gRnVuY3Rpb24gdG8gcHJpbnQgbiBlbGVtZW50cyBvZiB0aGUgYXJyYXkgYXJyCnZvaWQgcHJpbnRBcnJheShpbnQgYXJyW10sIGludCBuKQp7Cglmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKCQljb3V0IDw8IGFycltpXSA8PCAiICI7Cn0KCi8vIHBlcmZvcm0gYnViYmxlIHNvcnQgb24gYXJyW10Kdm9pZCBidWJibGVTb3J0KGludCBhcnJbXSwgaW50IG4pCnsKCS8vIHJ1biAobiAtIDEpIHRpbWVzCglmb3IgKGludCBrID0gMDsgayA8IG4gLSAxOyBrKyspIAoJewoJCS8vIGZsYWcgdG8gZGV0ZWN0IHRoYXQgdGhlIGxpc3QgaXMgYWxyZWFkeSBzb3J0ZWQKCQlib29sIHNvcnRlZCA9IHRydWU7CgkJCgkJLy8gbGFzdCBrIGl0ZW1zIGFyZSBhbHJlYWR5IHNvcnRlZCwgc28gaW5uZXIgbG9vcCBjYW4gCgkJLy8gYXZvaWQgbG9va2luZyBhdCB0aGUgbGFzdCBrIGl0ZW1zCgkJZm9yIChpbnQgaSA9IDA7IGkgPCBuIC0gMSAtIGs7IGkrKykKCQl7CgkJCWlmIChhcnJbaV0gPiBhcnJbaSArIDFdKQoJCQl7CgkJCQlzd2FwKGFycltpXSwgYXJyW2kgKyAxXSk7CgkJCQlzb3J0ZWQgPSBmYWxzZTsKCQkJfQoJCX0KCQkvLyBzdG9wIGFsZ29yaXRobSBpZiB0aGUgaW5uZXIgbG9vcCBkaWRu4oCZdCBkbyBhbnkgc3dhcAoJCWlmIChzb3J0ZWQpCgkJCWJyZWFrOwoJfQp9CgppbnQgbWFpbigpCnsKCWludCBhcnJbXSA9IHsgMywgNSwgOCwgNCwgMSwgOSwgLTIgfTsKCWludCBuID0gc2l6ZW9mKGFycikgLyBzaXplb2YoYXJyWzBdKTsKCglidWJibGVTb3J0KGFyciwgbik7CgoJcHJpbnRBcnJheShhcnIsIG4pOwoKCXJldHVybiAwOwp9Cg==