C语言入门:利用冒泡排序算法实现个人总分排序

C语言:利用冒泡排序算法实现个人总分排序


设一维数组 a 有 N 个元素,要求从小到大排序。冒泡法的基本思想是:

  • 第1轮比较:将相邻两个数 a[0]与 a[1]比较,若 a[0]>a[1],则两元素交换,否则不交换。 再依次 a[1]与 a[2]比较、a[2]与 a[3]比较……,只要前者比后者大就交换,直到比较到最后两个数a[N-2]与a[N-1]数。 此时,最大数已换到最后一个位置a[N-1],这算是完成了第1轮比较。共比较了N-1次。
  • 第2轮比较:依次将a[0]与 a[1]比较,a[1]与 a[2]比较……,只要前者比后者大就交换,直到比较到a[N-3]与a[N-2],共比较N-2次。此时,次大数到了倒数第二位置a[N-2]。
  • 这样直到第N-1轮,a[0]与a[1]比较,若 a[0]>a[1],则两元素交换,共比较1次(N-(N-1))次。此时,a[1]位置是次小的数,a[0]位置已经是最小的数。排序完成。

整个比较过程,较小的数依次“浮上”前面位置,较大的数依次“沉底”到后面位置,就像水泡上浮似的,所以称为“起泡法”或“冒泡法”。

#include <stdio.h>
#define N 5
void main()
{
  int i,j,k,t,a[N];
  printf("请输入%d个学生总分:\n",N);  
  for(i=0;i<N;i++)
  {
    scanf("%d",&a[i]);
  }
for(i=0;i<N-1;i++)         //N个数需要N-1轮排序
 {
    for(j=0;j<N-1-i;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<N;i++) 
 {
   printf("%d ",a[i]);
 }
 printf("\n"); 
}

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jason Li808

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值