#include <iostream>
void swap(int *num1, int *num2)
{
int temp = *num2;
*num2 = *num1;
*num1 = temp;
}
void selectionSort(int array[], int size)
{
int start_index = 0;
while(start_index < size)
{
int min_index = start_index;
for(int i = start_index+1; i < size; i++)
{
if(array[i] < array[min_index])
{
min_index = i;
}
}
swap(&array[start_index], &array[min_index]);
start_index++;
}
}
void print(int array[], int size)
{
for(int i = 0; i < size; i++)
{
std::cout << array[i] << " ";
}
std::cout << '\n';
}
int main()
{
int arr[] = {5, 3, 12, 2, 8};
int size = sizeof(arr)/sizeof(int);
std::cout << "Unsorted Array: ";
print(arr, size);
selectionSort(arr, size);
std::cout << "Sorted Array: ";
print(arr, size);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdm9pZCBzd2FwKGludCAqbnVtMSwgaW50ICpudW0yKQp7CiAgaW50IHRlbXAgICA9ICpudW0yOwogICpudW0yICAgICAgPSAqbnVtMTsKICAqbnVtMSAgICAgID0gIHRlbXA7Cn0KCnZvaWQgc2VsZWN0aW9uU29ydChpbnQgYXJyYXlbXSwgaW50IHNpemUpCnsKICBpbnQgc3RhcnRfaW5kZXggPSAwOwogIHdoaWxlKHN0YXJ0X2luZGV4IDwgc2l6ZSkKICB7CiAgICBpbnQgbWluX2luZGV4ID0gc3RhcnRfaW5kZXg7CiAgICBmb3IoaW50IGkgPSBzdGFydF9pbmRleCsxOyBpIDwgc2l6ZTsgaSsrKQogICAgewogICAgICBpZihhcnJheVtpXSA8IGFycmF5W21pbl9pbmRleF0pCiAgICAgIHsKICAgICAgICBtaW5faW5kZXggPSBpOwogICAgICB9CiAgICB9CiAgICBzd2FwKCZhcnJheVtzdGFydF9pbmRleF0sICZhcnJheVttaW5faW5kZXhdKTsKICAgIHN0YXJ0X2luZGV4Kys7CiAgfQp9Cgp2b2lkIHByaW50KGludCBhcnJheVtdLCBpbnQgc2l6ZSkKewogIGZvcihpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspCiAgewogICAgc3RkOjpjb3V0IDw8IGFycmF5W2ldIDw8ICIgIjsKICB9CiAgc3RkOjpjb3V0IDw8ICdcbic7Cn0KCmludCBtYWluKCkKewogIGludCBhcnJbXSA9IHs1LCAzLCAxMiwgMiwgOH07CiAgaW50IHNpemUgPSBzaXplb2YoYXJyKS9zaXplb2YoaW50KTsKICBzdGQ6OmNvdXQgPDwgIlVuc29ydGVkIEFycmF5OiAiOwogIHByaW50KGFyciwgc2l6ZSk7CiAgc2VsZWN0aW9uU29ydChhcnIsIHNpemUpOwogIHN0ZDo6Y291dCA8PCAiU29ydGVkIEFycmF5OiAiOwogIHByaW50KGFyciwgc2l6ZSk7Cn0K