#include <iostream>
using namespace std;


// int* selection_sort(int arr[],int len)
// {
//     for(int i = 0;i < len;i++)
//     {
//         int min = arr[i];
//         for(int j = i + 1;j < len;j++)
//         {
//             if(arr[j] < min)
//             {
//                 min = arr[j];
//             }
//         }
//         arr[i] = min;
 
//     }

//     return arr;
// }
//以上这种交换导致原有的值被覆盖,后续无法进行选择排序,会导致后续出现一连串的最小数字,直至到初始数组中最小元素的位置,比如24 69 80 57 13 16 通过上述代码排序后答就成了 13 13 13 13 13 16,最小数字 13 反复出现到了初始数组中的第五个位置,位置与初始数组的位置一致,所以我这段代码是行不通的


//以下可以通过运行,但不一定是选择排序,可以参考
// int* selection_sort(int arr[],int len)
// {
//     for(int i = 0;i <= len - 1 - 1;i++)
//     {
//         int index_1 = i;
//         for(int j = i + 1;j <= len - 1;j++)
//         {
//             int index_2 = j;
//             if(arr[i] > arr[j])
//             {
//                 swap(arr[i],arr[j]);
//             }
//         }
//     }
//     return arr;
// }


//选择排序
int* selection_sort(int arr[],int len)
{
    for(int i = 0;i <= len - 1 - 1;i++)
    {
        int index_min = i;
        for(int j = i + 1;j <= len - 1;j++)
        {
            if(arr[index_min] > arr[j])
            {
                index_min = j;
            }
        }

        if(index_min != i)
        {
            swap(arr[index_min],arr[i]);
        }
    }
    return arr;
}



int main() 
{

    int arr[6] = { 0 };
    int len = sizeof(arr) / sizeof(int);
    
    for (int i = 0; i < len; i++) {
        cin >> arr[i];
    }
    
    // write your code here......
    selection_sort(arr,len);

    for(int i = 0;i < len;i++)
    {
        cout << arr[i] << " ";
    }


    return 0;
}