冒泡法排序

冒泡法,顾名思义就是指气泡从水底向水面上冒,应用在排序上就表示一些数中最大数或者最小数到达最高位或者最低位,后面的数依次由大到小或由小到大排序,例如有一个数组a[10]={2,4,5,7,9,1,0,3,6,8},他们是杂乱无章的,现要将他们由大到小排序。

首先我们用a[0]和a[1]进行比较,显然a[0]<a[1],就让a[0]和a[1]的值进行互换,此时a[0]=4,a[1]=2,再让a[1]和a[2]进行比较,同理互换后,a[1]=5,a[2]=2,一直比较换值下去当a[4]=2时,用a[4]和a[5]进行比较,因为此时a[4]>a[5],就不用换值a[4]=2,a[5]=1,因为我们要把最小数放到最后,此时就用a[5]和a[6]比较,同理,再进行9次比较后,最小数0终于到了最后面,这是第一趟比较,第二趟依然由a[0]开始比较,总共比较8次后数字1到达倒数第二位,也就是说总共完成9趟比较后完成了从大到小的排序,如果用j表示比较的趟数,那么第j趟要比较10-j次。程序如下:

#include<stdio.h>
int  main()
{
    int i, j, t,a[10];
    printf("请输入10个数\n");
    for (i = 0; i < 10; i++)
         scanf("%d", &a[i]);      //向数组a[10]内输入想要排序的数字,即初始化
    for (j = 1; j < 10;j++)            //需要进行9趟比较
    for (i = 0; i < 10 - j; i++)      //每趟比较需要进行10-j次比较
    {
         if (a[i] < a[i + 1]) //a[i]<a[i+1]时,将二者的数值进行互换,反之不互换
         {
             t= a[i];
         	a[i] = a[i + 1];
         	a[i + 1] = t;
         }
    }
    printf("由大到小排序后结果为\n");
    for (i = 0; i < 10; i++)          //将经过排序后的数字打印出来
         printf("%d ", a[i]);
    printf("\n");
    return  0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值