用冒泡排序法对任意输入的 10 个数按照从小到大的顺序进行排序。
实现过程:
(1) 通过两个 for 循环实现冒泡排序的全过程,外层 for 循环决定冒泡排序的趟数,内层 for 循环决定每趟所进行两两比较的次数。
(2) 程序代码如下:
#include <stdio.h>
int main()
{
int i,j,t,a[10]; //定义变量及数组为基本整型
printf("请输入10个数:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]); //从键盘中输入10个数
for(i=0;i<9;i++) //变量i代表比较的趟数
for(j=1;j<9-i;j++) //变最j代表每趟两两比较的次数
if(a[j]>a[j+1])
{
t=a[j]; //产利用中间变童实现两值互换
a[j]=a[j+1];
a[j+1]=t;
}
printf("排序后的顺序是:\n");
for(i=0;i<10;i++)
printf("%5d",a[i]); //将胃泡排序后的顺序输出
printf("\n");
return 0;
}
运行结果:
请输入10个数:
66 32 23 45 25 5 15 69 46 37
排序后的顺序是:
5 15 23 25 32 37 45 46 66 69
技术要点:
本实例要求用冒泡法对 10 个数由小到大进行排序,冒泡法的基本思路是,如果要对 n 个数进行冒泡排序,那么要进行 n-1 趟比较,在第 1 趟比较中要进行 n-1次两两比较,在第 j 趟比较中要进行 n-1-j 次两两比较。从这个基本思路中就会发现,趟数决定了两两比较的次数,这样就很容易将两个 for 循环联系起来了。
实现冒泡排序函数bubbleSort,排序(90 21 132 -58 34)实现从小到大排序
/*实现冒泡排序函数bubbleSort,排序(90 21 132 -58 34)实现从小到大排序*/
#if 0
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int a[] = { 90,21,132,-58,34 };//定义数组变量a并赋值
int n = sizeof(a) / sizeof(int);//定义变量n取数组元素个数
void bubbleSort(int a[], int n)//定义函数bubbleSort
{
for (int i = 0; i < n-1; i++)//变量i表示比较的趟数
{
for (int j = 0; j < n - 1 - i; j++)//变量j表示每趟两两比较的次数
{
if (a[j] > a[j + 1])
{
int t; //利用中间值将值置换
t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
}
}
}
void main()
{
printf("原数组:\n");
for (int i = 0; i < n; i++)
{
printf("%d ", a[i]);
}
bubbleSort(a, n); //调用函数实现数组从小到大排序
printf("\n排序后数组:\n");
for (int i = 0; i < n; i++)
{
printf("%d ", a[i]);
}
}
#endif