5.7
改进冒泡排序程序,使其当数据已经有序时,直接结束排序过程。函数原型:
void Bubble(int *a,int n);//对n个整数从小到大排序
在主函数中调用Bubble对键盘输入的m个整数进行排序并输出。其中m个元素的整型数组p可以动态申请,
如 int *p=(int *)calloc(m,sizeof(int));
测试样例如下:
如输入:
10
87 66 92 85 62 77 95 100 89 73
则输出为:
62 66 73 77 85 87 89 92 95 100
样例输入:
6
9 8 7 6 5 4
样例输出:
4 5 6 7 8 9
#include<stdio.h>
void Bubble(int *a, int n)//定义冒泡排序函数,含指针
{
int i, j, h;
for (i = 0; i < n - 1; i++)//使下面的梳理顺序再次执行(最多只需执行n-1次,例如43210,经过5-1=4次梳理,可得01234)
{
for (j = 0; j < n - i - 1; j++)//单次梳理顺序,顺序排列(例如43210,经过1次梳理,可得32104)
{
if (a[j] > a[j + 1])//数值交换
{
h = a[j + 1]; a[j + 1] = a[j]; a[j] = h;
}
}
}
}
int main()
{
int n;
scanf("%d", &n);
int i; int a[100];
scanf("%d", &a[0]);//两次输入,默认换行
for (i = 1; i < n; i++)
scanf("%d", &a[i]);
Bubble(a, n);
printf("%d", a[0]);
for (i = 1; i < n; i++)
printf(" %d", a[i]);
system("pause");
return 0;
}