- 代码如下:
#include<stdio.h>
int main()
{
int i, j, t = 0;
int a[100] = { 0 };
int n;
scanf("%d", &n);
for (i = 0; i < n; i++)
{
scanf("%d", &a[i]);//输入要比较的数
}
for (i = 0; i < n; i++)
{
for (j = i+1; j < n; j++)//双重循环将第i个值与其后面的比较
{
if (a[j] > a[i])//降序:> 升序:<
{
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
for (i = 0; i < n; i++)
{
printf("%d ", a[i]);//打印
}
return 0;
}
2.选择排序法就是将该循环的第一位数与后面的数进行比较,如下:
假设一个数组 a[11] = { 20, 5, 30, 15, 40, 42, 10, 9, 33, 11, 98}进行升序
选出最小的:5,20,30, 15, 40, 42, 10, 9, 33, 11, 98; | |
选出第二小的:5,9,30, 15, 40, 42, 10,20,33,11,98; | |
选出第三小的:5,9,10,15,40,42,30,20,33,11,98; | |
选出第四小的:5,9,10,11,40,42,30,20,33,15,98; | |
选出第五小的:5,9,10,11,15,42,30,20,33,40,98; | |
选出第五小的:5,9,10,11,15,20,30,42,33,40,98; | |
选出第六小的:5,9,10,11,15,20,30,42,33,40,98; | |
选出第七小的:5,9,10,11,15,20,30,33,42,40,98; | |
选出第八小的:5,9,10,11,15,20,30,33,40,42,98; | |
选出第九小的:5,9,10,11,15,20,30,33,40,42,98; | |
选出第十小的:5,9,10,11,15,20,30,33,40,42,98。 | |
共循环10次,相应第11位数就是最大或最小的 |
3.值的交换原理
**t相当于一个暂存器,a[ i ]的值赋给t后,a[ i ]空了,a[ j ]的值就能赋给a[ i ],
a[ j ]空了,原来a[ i ]放在t的值就能赋给a[ j ],以此达到换值的目的。
**