int a[5]={5,4,3,2,1};
排序思想:相邻的两个数进行比较 (两两比较),如果前者大则交换位置
第一轮:外层循环变量j j=0
5 4进行比较:---》4 5 3 2 1
5 3 进行比较:---》4 3 5 2 1
5 2 进行比较:---》4 3 2 5 1
5 1 进行比较:---》4 3 2 1 5 ------>最大值位置正确 4次 4-0
第2轮:j=1
4 3 进行比较:---》3 4 2 1 5
4 2 进行比较:---》3 2 4 1 5
4 1 进行比较:---》3 2 1 4 5 ---》3 --- 4-1
第3轮:j=2
3 2 进行比较:---》2 3 1 4 5
3 1 进行比较:---》2 1 3 4 5 ----》2 --- 4-2
第4轮:j=3
2 1进行比较:---》1 2 3 4 5 ---》1 --- 4-3
规律:
比较的轮数:是元素个数-1 外层循环控制的轮数 内层循环控制比较次数
内层循环的次数:是元素个数-1-外层循环的变量
代码:
#include <stdio.h> //引入头文件 std:标准 i:输入 o:输出 .h:库文件
#include <strings.h>
#include <string.h>
int main(int argc, char const *argv[])
{
int a[5] = {5, 4, 3, 2, 1};
for (int j = 0; j < 5 - 1; j++)
{
for (int i = 0; i < 5 - 1 - j; i++)
{
if (a[i] > a[i + 1])
{
int tem = a[i];
a[i] = a[i + 1];
a[i + 1] = tem;
}
}
}
// 输出数组内容
for (int i = 0; i < 5; i++)
{
printf("%d ", a[i]);
}
return 0;
}