选择排序法就是找出最大的一个元素,和末尾的元素交换,
然后再从头开始,查找第1 个到第N-1 个元素中最大的一个,和第N-1 个元素交换……
其实差不多就是冒泡法的思想,但整个过程中需要移动的元素比冒泡法要少,因此性能是比冒泡法优秀的。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int my_printf(int arr[], int len)
{
int i = 0;
for (i = 0; i < len; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
int Selection_sort(int arr[], int len)
{
int i = 0;
int j = 0;
int a = 0;
int b = 0;
for (i = 0; i < len; i++)
{
a = arr[i];
b = i;
for (j = i; j < len; j++)
{
if (arr[j] < a)
{
a = arr[j];
b = j;
}
}
arr[b] = arr[i];
arr[i] = a;
}
return 0;
}
int main()
{
int arr[10];
int i = 0;
int len = sizeof(arr) / sizeof(arr[0]);
printf("请输入一组数据:\n");
for (i = 0; i < len; i++)
{
scanf("%d", &arr[i]);
}
my_printf(arr,len);
Selection_sort(arr, len);
printf("排序后为:\n");
my_printf(arr, len);
system("pause");
return 0;
}