#include <stdio.h>
//要排序的数组
//{4.8.2.0}
/*
第一轮比较,比较3次
1-2:4.8.2.0
2-3:4.2.8.0
3-4:4.2.0.8
第二轮比较,比较两次
1-2:2.4.0.8
2-3:2.0.4.8
第三轮比较,比较一次
1-2:0.2.4.8
第四轮就只剩一个0,所以不用比较
总结:四个元素的数组 比较了几轮 3 我们第一轮:3次 第二轮2第三轮 1
*/
int main(int argc,const char * argv[]) {
//要比较的数组
int a[4] = {4,8,2,0};
//比较的轮数,j <数组元素的个数 - 1
for (int j = 0; j < 3; j++) {
/*
第一次j(比较轮数)的值 比较的次数
0 3
1 2
2 1
*/
//第一轮比较a[0]和a[1],a[1]和 a[2],a[2]和a[3],每轮比较的次数 = 3 -比较的第几次,i <数组的个数- 1再减去比较的轮数
for (int i = 0; i < 3 - j; i++) { /*
第一次 i的值 a的下标的值(也就是哪个下标和哪个下标比较)
0 0-1
1 1-2
2 2-3
*/
//判断如果前一个数比后一个数大就往后移一位,从上面的注释可以看出来是 i和 i+1进行比较
if (a[i] > a[i+1]) {
//定义一个变量记录一下 a[i],
int temp = a[i];
//如果 a[i] > a[i+1]就把数组中的i下标的值换成i+1下标的互换
a[i] = a[i+1];
//切记此处不可以赋为 a[i],因为 a[i]以赋值为a[i] = a[i+1];
a[i+1] = temp;
//交换过程定义一个变量来存储a[i]的值 接着赋值
//a[i] = a[i+1];a[i+1] =temp
}
}
}
//遍历打印数组
for (int i = 0; i < 5; i++) {
printf("a[%d] = %d\n",i,a[i]);
}
}