简单选择排序:
int a[5] = {12,6,78,3,9};
从大到小排序:
1、假设第一个元素为最大值。
int max = a[0];
int index = 0;//存放的是当前最大值的数组下标
2、从a[1]开始后续的每个元素和max比较,如果a[1] > max,更新max的值:max = a[1];
继续判断a[2] > max, 78 > 12,max = 78,当条件成立时还要更新最大值的下标
判断a[3] > max, 3 > 78,max = 78
判断a[4] > max,9 > 78,max = 78
3、a[index] 和 a[0]交换
到此只能将第一个找到的最大值放到a[0]中。
但是还要找第二个最大值放到a[1],第三个最大值放在a[2]中,第四个最大值放在a[3]
4、假设第二个元素为最大值
int max = a[1];
int index = 1;
5、从a[2]开始每个元素和max比较
6、a[1]和a[index]交换
后续操作都是在重复执行1、2、3的逻辑
#include<stdio.h>
int main(int argc, const char *argv[])
{
int a[5] = {12,5,78,123,6};
int max,index,temp;
int i,j;
for(i = 0;i < 4;i ++)
{
max = a[i];
index = i;
for(j = i + 1;j < 5;j ++)
{
if(max < a[j])
{
max = a[j];
index = j;
}
}
temp = a[i];
a[i] = a[index];
a[index] = temp;
}
for(i = 0;i < 5;i ++)
{
printf("%d\t",a[i]);
}
printf("\n");
return 0;
}