如何用C语言实现冒泡排序法?
话不多说,代码如下:
1 #include<stdio.h> 2 3 int main() 4 { 5 int a[100], i, j, t, n; 6 printf("请输入要排序的数的个数:"); 7 scanf_s("%d", &n); //输入一个数n,表示接下来有n个数 8 for (i = 1; i <= n; i++) 9 { 10 //循环读入n个数到数组a中 11 printf("请输入要排序的数:\n"); 12 scanf_s("%d", &a[i]); 13 } 14 //冒泡排序的核心部分 15 for (i = 1; i <= n; i++) //n个数排序,只进行n-1趟 16 { 17 for (j = 1; j <= n - i; j++) //从第一位开始比较直到最后一个尚未归位的数 18 { 19 if (a[j] < a[j + 1]) //比较大小并交换 20 { 21 t = a[j]; 22 a[j] = a[j + 1]; 23 a[j + 1] = t; 24 } 25 } 26 } 27 for (i = 1; i <= n; i++) 28 { 29 printf(" %d", a[i]); 30 } 31 getchar(); 32 getchar(); 33 return 0; 34 }
运行结果如下:
根据分数高低来给姓名排序,使用了一个结构体,代码如下:
#define _CRT_SECURE_NO_DEPRECATE #include<stdio.h> //创建一个结构体用来存储姓名和分数 struct MyStruct { char name[21]; char score; }; int main() { struct MyStruct a[100], t; int i, j, n; scanf("%d", &n);//输入一个数n,表示要排序的个数 //循环读入n个人名和分数 for (i = 1; i <= n; i++) { scanf("%s %d",&a[i].name,&a[i].score); } //冒泡排序,按分数从高到低进行排序 for (i = 1; i <= n; i++) { for (j = 1; j < n; j++) //对分数进行比较 { if (a[j].score < a[j + 1].score) { t = a[j]; a[j] = a[j + 1]; a[j + 1] = t; } } } //输出人名 for (i = 1; i <= n; i++) { printf("%s\n", a[i].name); } getchar(); getchar(); return 0; }
运行结果如下