一、选择排序的原理
1.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
2.再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾
3.重复第2步,直到所有元素均排序完毕
二、代码实现
void select_sort(int arr[], int len)
{
int min;
for (int i = 0; i < len - 1; i++)//排序次数
{
min = i;
for (int j = i + 1; j < len; j++)
{
if (arr[j] < arr[min])
{
min = j;//记录交换的元素下标值
}
}
if (i != min) //判断最值的下标是否改变
{
//将最值的位置与此次遍历的起始位置进行交换,以将最值放到起始位置
int temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
}
}
三、实现从小到大排序
输入10个数字并将其从小到大排
#include <stdio.h>
void select_sort(int arr[], int len)
{
int min;
for (int i = 0; i < len - 1; i++)//排序次数
{
min = i;
for (int j = i + 1; j < len; j++)//记录交换的元素下标值
{
if (arr[j] < arr[min])
{
min = j;
}
}
if (i != min) //判断最值的下标是否改变
{
//将最值的位置与此次遍历的起始位置进行交换,以将最值放到起始位置
int temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
}
for (int i = 0; i < len; i++)
{
printf("%d ", arr[i]);
}
}
int main()
{
int arr[10];
for (int i = 0; i < 10; i++)
{
scanf("%d", &arr[i]);
}
select_sort(arr, 10);
return 0;
}
结果