#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
//把最大的挑出来,然后把它和第一个交换位置,
//挑最大的数,放到第一个位子
int a[5] = { 5,3,4,1,8 };
int i, j, k, t;
for (j = 0; j < 4; j++)//j=0是第一个位子
{
k = j;
//假设j的位置最大
for (i = k + 1; i < 5; i++)//找出最大的值
{
if (a[k] < a[i])
{
k = i;//本来k是第一个元素,它比第二个元素小,
//就把它变成第二个元素(改下标)
//这地方k变成4了
}
}
if (k != j)//第一次排序j=0
{
t = a[k];//数据交换
a[k] = a[j];
a[j] = t;
}
}
for (i = 0; i < 5; i++)
{
printf("%d", a[i]);
}
return 0;
}
我一开始写选择排序的时候不理解为什么外部for循环下面要写k=j; 直接用j不好么。于是我没有用k,但是写到if判断语句的时候就写不了了。然后我明白了k的作用。
第一次排序找最大值的时候,j的值是不变的,一直等于0;而k的值是不断变化的,通过内部for循环的i不断像k赋值。
k的作用是体现在if判断语句那,把放在数组最后一位的最大值放到第一位去。
第一次发博客,球球不要喷我