#include <iostream>
#include <cstdlib>
void swap(int* bigger, int* smaller)
{
*bigger += *smaller;
*smaller = *bigger - *smaller;
*bigger = *bigger - *smaller;
}
int* bubbleSort(int *data, int size)
{
bool swapped = true;
int *sortedArray = (int*)malloc(size*sizeof(int));
int* s = sortedArray;
for (int i = 0; i < size;i++){
*s++ = *data++;
}
while (swapped)
{
swapped = false;
for (int i = 1; i <= size - 1; i++)
{
if (sortedArray[i - 1] > sortedArray[i])
{
swap(&sortedArray[i - 1], &sortedArray[i]);
swapped = true;
}
}
size--;
}
return sortedArray;
}
int main()
{
int data[] = {9,2,8,3,7,4,6,5,1,0};
int* sorted = bubbleSort(data, 10);
for(int i = 0; i < 10; ++i)
{
std::cout << data[i] << " " << sorted[i] << "\n";
}
return 0;
}
ICNpbmNsdWRlIDxpb3N0cmVhbT4KICAgICNpbmNsdWRlIDxjc3RkbGliPiAgICAgCgogICAgdm9pZCBzd2FwKGludCogYmlnZ2VyLCBpbnQqIHNtYWxsZXIpCiAgICB7CgkgICAgKmJpZ2dlciArPSAqc21hbGxlcjsKCSAgICAqc21hbGxlciA9ICpiaWdnZXIgLSAqc21hbGxlcjsKCSAgICAqYmlnZ2VyID0gKmJpZ2dlciAtICpzbWFsbGVyOwogICAgfQogICAgIAogICAgaW50KiBidWJibGVTb3J0KGludCAqZGF0YSwgaW50IHNpemUpCiAgICB7CgkgICAgYm9vbCBzd2FwcGVkID0gdHJ1ZTsKCSAgICBpbnQgKnNvcnRlZEFycmF5ID0gKGludCopbWFsbG9jKHNpemUqc2l6ZW9mKGludCkpOwoJICAgIGludCogcyA9IHNvcnRlZEFycmF5OwoJICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTtpKyspewoJICAgICpzKysgPSAqZGF0YSsrOwogICAgfQogICAgIAogICAgd2hpbGUgKHN3YXBwZWQpCiAgICB7CgkgICAgc3dhcHBlZCA9IGZhbHNlOwoJICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IHNpemUgLSAxOyBpKyspCgkgICAgewoJCSAgICBpZiAoc29ydGVkQXJyYXlbaSAtIDFdID4gc29ydGVkQXJyYXlbaV0pCgkgICAgewoJCSAgICBzd2FwKCZzb3J0ZWRBcnJheVtpIC0gMV0sICZzb3J0ZWRBcnJheVtpXSk7CgkJICAgIHN3YXBwZWQgPSB0cnVlOwoJICAgIH0KCSAgICB9CgkgICAgc2l6ZS0tOwoJICAgIH0KICAgIHJldHVybiBzb3J0ZWRBcnJheTsKICAgIH0KICAgICAKICAgIGludCBtYWluKCkKICAgIHsKCSAgICBpbnQgZGF0YVtdID0gezksMiw4LDMsNyw0LDYsNSwxLDB9OwoJICAgIGludCogc29ydGVkID0gYnViYmxlU29ydChkYXRhLCAxMCk7CgkgICAgIAoJICAgIGZvcihpbnQgaSA9IDA7IGkgPCAxMDsgKytpKQoJICAgIHsKCQkgICAgc3RkOjpjb3V0IDw8IGRhdGFbaV0gPDwgIiAiIDw8IHNvcnRlZFtpXSA8PCAiXG4iOwoJICAgIH0KCSAgICByZXR1cm4gMDsKICAgIH0K