#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;
}