#include <vector>
#include <iostream>
void Swap(int a[], int i, int j)
{
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
int smallest(int *arr, int size)
{
int small;
if (size == 1)
{
return 0;
}
small = smallest(arr, size - 1);
//go from the last to the first index in the array and then work backwards to find the smallest one all the way back to the beginning
return (arr[size - 1] < arr[small]) ? size - 1 : small;
}
void chooseSort(int * arr, int size)
{
if (size <= 1)
{
return;
}
int index = smallest(arr, size);
Swap(arr, index, 0);
chooseSort(arr + 1, size - 1);
}
int main() {
int a[] = {8,2,3,1,7,5};
chooseSort(a, 6);
for(auto x:a) std::cout << x << std::endl;
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKdm9pZCBTd2FwKGludCBhW10sIGludCBpLCBpbnQgaikKewoJaW50IHRlbXAgPSBhW2ldOwoJYVtpXSA9IGFbal07CglhW2pdID0gdGVtcDsKfQoKaW50IHNtYWxsZXN0KGludCAqYXJyLCBpbnQgc2l6ZSkKewoJaW50IHNtYWxsOwoJaWYgKHNpemUgPT0gMSkKCXsKCQlyZXR1cm4gMDsKCX0KCXNtYWxsID0gc21hbGxlc3QoYXJyLCBzaXplIC0gMSk7CgkvL2dvIGZyb20gdGhlIGxhc3QgdG8gdGhlIGZpcnN0IGluZGV4IGluIHRoZSBhcnJheSBhbmQgdGhlbiB3b3JrIGJhY2t3YXJkcyB0byBmaW5kIHRoZSBzbWFsbGVzdCBvbmUgYWxsIHRoZSB3YXkgYmFjayB0byB0aGUgYmVnaW5uaW5nCglyZXR1cm4gKGFycltzaXplIC0gMV0gPCBhcnJbc21hbGxdKSA/IHNpemUgLSAxIDogc21hbGw7Cn0KCnZvaWQgY2hvb3NlU29ydChpbnQgKiBhcnIsIGludCBzaXplKQp7CglpZiAoc2l6ZSA8PSAxKQoJewoJCXJldHVybjsKCX0KCWludCBpbmRleCA9IHNtYWxsZXN0KGFyciwgc2l6ZSk7CglTd2FwKGFyciwgaW5kZXgsIDApOwoJY2hvb3NlU29ydChhcnIgKyAxLCBzaXplIC0gMSk7Cn0KCmludCBtYWluKCkgewoJaW50IGFbXSA9IHs4LDIsMywxLDcsNX07CgljaG9vc2VTb3J0KGEsIDYpOwoJZm9yKGF1dG8geDphKSBzdGQ6OmNvdXQgPDwgeCA8PCBzdGQ6OmVuZGw7Cn0=