C语言编程100题-5.7

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;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值