//Xinnuo Wanng CS1A Chapter 8 #9 Page.488
/*******************************************************************************
* Sort Arrays
* _____________________________________________________________________________
* The program uses two arrays of at least 20 integers.One calling uses bubble
* sort and the other uses selection sort. Both of them need to count the number
* of exchanges.
* _____________________________________________________________________________
* Input
* num1 : The number of exchange in bubble sort.
* num2 : The number of exchange in selection sort.
*
* ****************************************************************************/
#include <iostream>
using namespace std;
void bubble(int arr[], int size);
void selection (int arr2[], int size2);
void swap (int & a, int &b);
void print(int arr[],int size);
int main()
{
int arr[]={26791, 33445, 79422, 13579,93121,62483, 55555,
77777, 85647, 26793};
int size = sizeof(arr)/sizeof (arr[0]);
bubble (arr,size);
print (arr,size);
cout<<endl;
int arr2[]={
2341, 4523, 22, 3412, 2711, 8999, 9999,8876, 6767, 2323, 9922,1111
};
int size2 = sizeof(arr2)/sizeof (arr2[0]);
selection(arr2, size2);
print(arr2,size2);
return 0;
}
void bubble(int arr[], int size)
{
for (int i = size-1; i > 0; i--)
{
for (int j= 0; j < i; j++)
{
if (arr[j]>arr[j+1])
{
swap (arr[j],arr[j+1]);
}
}
}
}
void selection (int arr2[], int size2)
{
for(int start = 0; start < size2; start ++)
{
int minIndex = start;
for (int i =start+1; i <size2; i++)
{
if (arr2[minIndex]> arr2[i])
{
minIndex =i;
}
}
swap(arr2[minIndex], arr2[start]);
}
}
void print(int arr[],int size)
{
for(int i =0; i< size; i++)
{
cout << arr[i]<<" ";
}
}
void swap (int &a, int & b)
{
int temp = a;
a=b;
b=temp;
}
Ly9YaW5udW8gV2FubmcgICAgICAgICAgICAgICAgQ1MxQSAgICAgICAgICAgICAgICAgICAgICAgIENoYXB0ZXIgOCAjOSBQYWdlLjQ4OAovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBTb3J0IEFycmF5cwogKiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwogKiBUaGUgcHJvZ3JhbSB1c2VzIHR3byBhcnJheXMgb2YgYXQgbGVhc3QgMjAgaW50ZWdlcnMuT25lIGNhbGxpbmcgdXNlcyBidWJibGUgCiAqIHNvcnQgYW5kIHRoZSBvdGhlciB1c2VzIHNlbGVjdGlvbiBzb3J0LiBCb3RoIG9mIHRoZW0gbmVlZCB0byBjb3VudCB0aGUgbnVtYmVyIAogKiBvZiBleGNoYW5nZXMuCiAqIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCiAqIElucHV0CiAqICAgIG51bTEgICAgOiBUaGUgbnVtYmVyIG9mIGV4Y2hhbmdlIGluIGJ1YmJsZSBzb3J0LgogKiAgICBudW0yICAgIDogVGhlIG51bWJlciBvZiBleGNoYW5nZSBpbiBzZWxlY3Rpb24gc29ydC4KICogCiAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKI2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp2b2lkIGJ1YmJsZShpbnQgYXJyW10sIGludCBzaXplKTsKdm9pZCBzZWxlY3Rpb24gKGludCBhcnIyW10sIGludCBzaXplMik7CnZvaWQgc3dhcCAoaW50ICYgYSwgaW50ICZiKTsKdm9pZCBwcmludChpbnQgYXJyW10saW50IHNpemUpOwoKaW50IG1haW4oKSAKewogICAgaW50IGFycltdPXsyNjc5MSwgMzM0NDUsIDc5NDIyLCAxMzU3OSw5MzEyMSw2MjQ4MywgNTU1NTUsIAogNzc3NzcsIDg1NjQ3LCAgMjY3OTN9OwogICAgaW50IHNpemUgPSBzaXplb2YoYXJyKS9zaXplb2YgKGFyclswXSk7CiAgICBidWJibGUgKGFycixzaXplKTsKICAgIHByaW50IChhcnIsc2l6ZSk7CiAgICBjb3V0PDxlbmRsOwogICAgaW50IGFycjJbXT17CiAgICAJMjM0MSwgNDUyMywgMjIsIDM0MTIsIDI3MTEsIDg5OTksIDk5OTksODg3NiwgNjc2NywgMjMyMywgOTkyMiwxMTExCiAgICB9OwogICAgaW50IHNpemUyID0gc2l6ZW9mKGFycjIpL3NpemVvZiAoYXJyMlswXSk7CiAgICBzZWxlY3Rpb24oYXJyMiwgc2l6ZTIpOwogICAgcHJpbnQoYXJyMixzaXplMik7CiAgICAKICAgIAoJcmV0dXJuIDA7Cn0Kdm9pZCBidWJibGUoaW50IGFycltdLCBpbnQgc2l6ZSkKewoJZm9yIChpbnQgaSA9IHNpemUtMTsgaSA+IDA7IGktLSkKCXsKCQlmb3IgKGludCBqPSAwOyBqIDwgaTsgaisrKQoJCXsKCQkJaWYgKGFycltqXT5hcnJbaisxXSkKCQkJewoJCQkJc3dhcCAoYXJyW2pdLGFycltqKzFdKTsKCQkJfQoJCX0KCX0KfQp2b2lkIHNlbGVjdGlvbiAoaW50IGFycjJbXSwgaW50IHNpemUyKQp7Cglmb3IoaW50IHN0YXJ0ID0gMDsgc3RhcnQgPCBzaXplMjsgc3RhcnQgKyspCgl7CgkJaW50IG1pbkluZGV4ID0gc3RhcnQ7CgkJZm9yIChpbnQgaSA9c3RhcnQrMTsgaSA8c2l6ZTI7IGkrKykKCQl7CgkJCWlmIChhcnIyW21pbkluZGV4XT4gYXJyMltpXSkKCQkJewoJCQltaW5JbmRleCA9aTsJCgkJCX0KCQl9CgkJc3dhcChhcnIyW21pbkluZGV4XSwgYXJyMltzdGFydF0pOwoJfQp9CnZvaWQgcHJpbnQoaW50IGFycltdLGludCBzaXplKQp7Cglmb3IoaW50IGkgPTA7IGk8IHNpemU7IGkrKykKCXsKCQljb3V0IDw8IGFycltpXTw8IiAiOwoJfQp9CnZvaWQgc3dhcCAoaW50ICZhLCBpbnQgJiBiKQp7CglpbnQgdGVtcCA9IGE7CglhPWI7CgliPXRlbXA7Cn0=