冒泡排序法
如果有n个数进行冒泡排序,那么需要经过n-1趟排序,第一趟n-1次两两比较,第n-1趟进行1次两两比较,即第j趟进行n-j次两两比较。趟数决定了比较的次数,用两个for循环联系起来,当然也有其他的办法,后续补充。
如图所示:
代码:
#include <stdio.h>
int main() {
int i, j, t, a[10] = {3,4,6,5,1,7,8,2,9,0}; //定义行列和十个数
for (i = 0; i < 10; i++) //变量i表示比较的趟数
for (i = 0; i < 9; i++) //变量j表示每趟两两比较的次数
for (j = 0; j < i-j; j++)
if (a[j] > a[j + 1]) {
t = a[j];
a[j] = a[j + 1]; //交换前后数值
a[j + 1] = t;
}
printf("output :\n");
for (int i = 0; i < 10; i++) { //输出冒泡排序后的数字
printf("%3d", a[i]); //输出的数字占据三列
}
}
注意:
for (j = 0; j < i-j; j++)这里也可以写j<10,因为j不会超过j-i, for (j = 0; j < 10; j++),但是为了减小时间复杂度,所以写成i-j.