//Charlotte Davies-Kiernan CS1A Chapter 8 P.488 #9
//
/******************************************************************************
*
* Compare Exchanges
* ____________________________________________________________________________
* This program compares the exchanges made between a bubble sort and a
* selection sort on two identical arrays. The program will sort the arrays and
* then display the amount of exchanges each sorting method used.
* ____________________________________________________________________________
* Input
* SIZE :Amount of elements in both arrays
* array1 :array with 20 integers that is identical to array2
* array2 :array with 20 integers that is identical to array1
* Output
* bubbleExchanges :amount of exchanges used with the bubble sort method
* selectionExchanges :amount of exchanges used with the selction sort method
*****************************************************************************/
#include <iostream>
using namespace std;
//Function Prototype
void bubbleSort(int arr[], int size, int &exchangeCount);
void selectionSort(int arr[], int size, int &exchangeCount);
int main() {
//Data Dictionary
const int SIZE = 20;
int array1[SIZE] = {25, 47, 3, 19, 8, 56, 32, 71, 44, 10,
60, 21, 5, 39, 15, 67, 50, 2, 90, 11};
int array2[SIZE];
int bubbleExchanges = 0;
int selectionExchanges = 0;
for(int i = 0; i < SIZE; i++)
array2[i] = array1[i];
//Sort
bubbleSort(array1, SIZE, bubbleExchanges);
selectionSort(array2, SIZE, selectionExchanges);
//Display Result
cout << "Number of exchanges made by Bubble Sort: " << bubbleExchanges << endl;
cout << "Number of exchanges made by Selection Sort: " << selectionExchanges << endl;
return 0;
}
//Bubble Sort Function
void bubbleSort(int arr[], int size, int &exchangeCount){
bool swapped;
for(int i = 0; i < size - 1; i++){
swapped = false;
for (int j = 0; j < size - i - 1; j++){
if (arr[j] > arr [j + 1]){
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
exchangeCount++;
swapped = true;
}
}
if(!swapped)
break;
}
}
//Selection Sort Function
void selectionSort(int arr[], int size, int &exchangeCount){
int minIndex;
int temp;
for(int i = 0; i < size - 1; i++){
minIndex = i;
for(int j = i + 1; j < size; j++){
if(arr[j] < arr[minIndex])
minIndex = j;
}
if(minIndex != i){
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
exchangeCount++;
}
}
}
Ly9DaGFybG90dGUgRGF2aWVzLUtpZXJuYW4gICAgICAgICAgICAgQ1MxQSAgICAgICAgICAgICAgICAgQ2hhcHRlciA4IFAuNDg4ICM5Ci8vCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogCiAqIENvbXBhcmUgRXhjaGFuZ2VzCiAqIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KICogVGhpcyBwcm9ncmFtIGNvbXBhcmVzIHRoZSBleGNoYW5nZXMgbWFkZSBiZXR3ZWVuIGEgYnViYmxlIHNvcnQgYW5kIGEgCiAqIHNlbGVjdGlvbiBzb3J0IG9uIHR3byBpZGVudGljYWwgYXJyYXlzLiBUaGUgcHJvZ3JhbSB3aWxsIHNvcnQgdGhlIGFycmF5cyBhbmQgCiAqIHRoZW4gZGlzcGxheSB0aGUgYW1vdW50IG9mIGV4Y2hhbmdlcyBlYWNoIHNvcnRpbmcgbWV0aG9kIHVzZWQuIAogKiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCiAqIElucHV0CiAqICAgU0laRSAgICAgICAgICAgICAgIDpBbW91bnQgb2YgZWxlbWVudHMgaW4gYm90aCBhcnJheXMKICogICBhcnJheTEgICAgICAgICAgICAgOmFycmF5IHdpdGggMjAgaW50ZWdlcnMgdGhhdCBpcyBpZGVudGljYWwgdG8gYXJyYXkyCiAqICAgYXJyYXkyICAgICAgICAgICAgIDphcnJheSB3aXRoIDIwIGludGVnZXJzIHRoYXQgaXMgaWRlbnRpY2FsIHRvIGFycmF5MQogKiBPdXRwdXQKICogICBidWJibGVFeGNoYW5nZXMgICAgOmFtb3VudCBvZiBleGNoYW5nZXMgdXNlZCB3aXRoIHRoZSBidWJibGUgc29ydCBtZXRob2QKICogICBzZWxlY3Rpb25FeGNoYW5nZXMgOmFtb3VudCBvZiBleGNoYW5nZXMgdXNlZCB3aXRoIHRoZSBzZWxjdGlvbiBzb3J0IG1ldGhvZAogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNpbmNsdWRlIDxpb3N0cmVhbT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLy9GdW5jdGlvbiBQcm90b3R5cGUKdm9pZCBidWJibGVTb3J0KGludCBhcnJbXSwgaW50IHNpemUsIGludCAmZXhjaGFuZ2VDb3VudCk7CnZvaWQgc2VsZWN0aW9uU29ydChpbnQgYXJyW10sIGludCBzaXplLCBpbnQgJmV4Y2hhbmdlQ291bnQpOwoKaW50IG1haW4oKSB7Ci8vRGF0YSBEaWN0aW9uYXJ5CQpjb25zdCBpbnQgU0laRSA9IDIwOwppbnQgYXJyYXkxW1NJWkVdID0gezI1LCA0NywgMywgMTksIDgsIDU2LCAzMiwgNzEsIDQ0LCAxMCwKCSAgICAgICAgICAgICAgICA2MCwgMjEsIDUsIDM5LCAxNSwgNjcsIDUwLCAyLCA5MCwgMTF9OwppbnQgYXJyYXkyW1NJWkVdOwppbnQgYnViYmxlRXhjaGFuZ2VzID0gMDsKaW50IHNlbGVjdGlvbkV4Y2hhbmdlcyA9IDA7CgkKZm9yKGludCBpID0gMDsgaSA8IFNJWkU7IGkrKykKIGFycmF5MltpXSA9IGFycmF5MVtpXTsKIAovL1NvcnQKYnViYmxlU29ydChhcnJheTEsIFNJWkUsIGJ1YmJsZUV4Y2hhbmdlcyk7CnNlbGVjdGlvblNvcnQoYXJyYXkyLCBTSVpFLCBzZWxlY3Rpb25FeGNoYW5nZXMpOwoKLy9EaXNwbGF5IFJlc3VsdApjb3V0IDw8ICJOdW1iZXIgb2YgZXhjaGFuZ2VzIG1hZGUgYnkgQnViYmxlIFNvcnQ6ICIgPDwgYnViYmxlRXhjaGFuZ2VzIDw8IGVuZGw7CmNvdXQgPDwgIk51bWJlciBvZiBleGNoYW5nZXMgbWFkZSBieSBTZWxlY3Rpb24gU29ydDogIiA8PCBzZWxlY3Rpb25FeGNoYW5nZXMgPDwgZW5kbDsKCglyZXR1cm4gMDsKfQovL0J1YmJsZSBTb3J0IEZ1bmN0aW9uCnZvaWQgYnViYmxlU29ydChpbnQgYXJyW10sIGludCBzaXplLCBpbnQgJmV4Y2hhbmdlQ291bnQpewoJYm9vbCBzd2FwcGVkOwoJZm9yKGludCBpID0gMDsgaSA8IHNpemUgLSAxOyBpKyspewoJCXN3YXBwZWQgPSBmYWxzZTsKCQlmb3IgKGludCBqID0gMDsgaiA8IHNpemUgLSBpIC0gMTsgaisrKXsKCQkJaWYgKGFycltqXSA+IGFyciBbaiArIDFdKXsKCQkJCWludCB0ZW1wID0gYXJyW2pdOwoJCQkJYXJyW2pdID0gYXJyW2ogKyAxXTsKCQkJCWFycltqICsgMV0gPSB0ZW1wOwoJCQkJZXhjaGFuZ2VDb3VudCsrOwoJCQkJc3dhcHBlZCA9IHRydWU7CgkJCX0KCQl9CgkJaWYoIXN3YXBwZWQpCgkJYnJlYWs7Cgl9Cn0KLy9TZWxlY3Rpb24gU29ydCBGdW5jdGlvbgp2b2lkIHNlbGVjdGlvblNvcnQoaW50IGFycltdLCBpbnQgc2l6ZSwgaW50ICZleGNoYW5nZUNvdW50KXsKCWludCBtaW5JbmRleDsKCWludCB0ZW1wOwoJZm9yKGludCBpID0gMDsgaSA8IHNpemUgLSAxOyBpKyspewoJCW1pbkluZGV4ID0gaTsKCQlmb3IoaW50IGogPSBpICsgMTsgaiA8IHNpemU7IGorKyl7CgkJCWlmKGFycltqXSA8IGFyclttaW5JbmRleF0pCgkJCW1pbkluZGV4ID0gajsKCQl9CgkJaWYobWluSW5kZXggIT0gaSl7CgkJCXRlbXAgPSBhcnJbaV07CgkJCWFycltpXSA9IGFyclttaW5JbmRleF07CgkJCWFyclttaW5JbmRleF0gPSB0ZW1wOwoJCQlleGNoYW5nZUNvdW50Kys7CgkJfQoJfQp9