排序思想:
第一个跟后面每一个元素,如果后者较小,则将后者的下标数赋值给第一个元素的下标,第二个跟后面每一个元素,如果后者较小,则将后者的下标数赋值给第二个元素的下标,直到循环到倒数第二个数与最后一个数比较。
“若定义一个5个元素的数组:“
第一轮:外层循环变量!=0
第一个数跟第二个数比较“
第一个数跟第三个数比较
第一个数跟第四个数比较<
第一个数跟第五个数比较<
以上过程中,若前者的数大于后者的数,则将后面的下标赋给第一个数
第二轮:外层循环变量!-1<
第二个数跟第三个数比较<
第二个数跟第四个数比较
第二个数跟第五个数比较<
以上过程中,若前者的数大于后者的数,则将后面的下标赋给第二个数<第三轮:外层循环变量 !=3
第三个数跟第四个数比较“
第三个数跟第五个数比较←
以上过程中,若前者的数大于后者的数,则将后面的下标赋给第三个数<第四轮:外层循环变量1=44
第四个数跟第五个数比较←
若前者的数大于后者的数,则将后面的下标赋给第四
代码:
#include <stdio.h> //引入头文件 std:标准 i:输入 o:输出 .h:库文件
#include <strings.h>
#include <string.h>
int main(int argc, char const *argv[])
{
int a[5] = {1, 4, 3, 2, 5};
for (int j = 0; j < 5-1; j++)
{
int k = j; // 0 1 2
for (int i = j + 1; i < 5; i++)
{
if (a[k] > a[i])
{
k = i;
}
}
if (k != j)
{
int tem = a[k];
a[k] = a[j];
a[j] = tem;
}
}
// 输出数组内容
for (int i = 0; i < 5; i++)
{
printf("%d ", a[i]);
}
return 0;
}
特点:选择排序第一轮结束最小值在最前