#include <iostream>
#include <assert.h>
void Swap(int& left, int& right)
{
int tmp = left;
left = right;
right = tmp;
}
int Max(const int* arr, int size)
{
assert(arr);
int max_index = -1;
for(int i = 0; i < size; ++i)
if(arr[i] > arr[max_index])
max_index = i;
return max_index;
}
void Sort(int* arr, int size)
{
assert(arr);
for(int i = 0; i < size - 1; ++i){
int max_index = Max(arr, size - i);
Swap(arr[max_index], arr[size - i - 1]);
}
}
int main()
{
int arr[] = {5, 4, 3, 2, 1,};
const int size = sizeof(arr) / sizeof(arr[0]);
Sort(arr, size);
for(int i = 0; i < size; ++i)
std::cout << arr[i] << " ";
std::cout << std::endl;
return 0;
}