C语言的冒泡排序法,这么用才简单

初学C语言时总会对冒泡排序法的代码感到很迷茫,那么有没有更容易理解的方式去拿下“冒泡排序”呢?

 

文章目录

  • 冒泡排序法简介
  • 一、主要特点
  • 二、使用步骤
    • 1.教材上的代码
    • 2. 改进后的代码
  • 总结

 


冒泡排序简介

每趟不断将记录两两比较,并按“前小后大” 规则交换


提示:以下仅为本人意见,如有不足欢迎留言指正

一、主要特点

巧妙避开数组第一位的取值,从而让冒泡排序的代码更便于理解

二、使用步骤

1.教材上的代码

代码如下(C语言程序设计):

#include<stdio.h>
 int main()
 {
     int a[50];            //开辟一个新空间
     int i, j, t, n;        //i,j分别为循环计数器,n为要放入多少数字,t为交换中间量
     printf("How many numbers you will put? \n");
     scanf_s("%d", &n);
     printf("Input %d numbers: \n",n);
     for (i = 0; i < n; i++)
         scanf_s("%d", &a[i]);
     for (j = 1; j <= n - 1; j++)        //j表示第几轮比较
         for (i = 0; i <= n - j - 1; i++)        //注意这里的n-j-1
             if (a[i] > a[i + 1])
             {
                 t = a[i]; a[i] = a[i + 1]; a[i + 1] = t;
             }
     for (i = 0; i < n; i++)
         printf("%4d ", a[i]);
     return 0;
 }

注意上边的n-j-1的地方

2.改进后的代码

代码如下(个人意见):

#include<stdio.h>
 int main()
 {
     int a[50];            //开辟一个新空间
     int i, j, t, n;        //i,j分别为循环计数器,n为要放入多少数字,t为交换中间量
     printf("How many numbers you will put? \n");
     scanf_s("%d", &n);
     printf("Input %d numbers: \n",n);

     for (i = 1; i <= n; i++)        //注意,从a[1]开始输入数字,且i<=n
         scanf_s("%d", &a[i]);
     for (j = 1; j <= n - 1; j++)        //总要进行n-1轮比较
         for (i = 1; i <= n - j ; i++)        //注意这里的n-j
             if (a[i] > a[i + 1])
             {
                 t = a[i]; a[i] = a[i + 1]; a[i + 1] = t;
             }
     for (i = 1; i <= n; i++)        //输出的时候也从a[1]的地方开始
         printf("%4d ", a[i]);
     return 0;
 }

怎么样,n-j是不是比n-j-1容易想的多?当然,如果熟练的话还是建议使用第一种方式,毕竟是我们运用数组的常用方式,便于他人阅读。


总结


以上就是今天要讲的内容,本文仅仅简单介绍了C语言冒泡排序法的使用,其中涉及到了循环语句等内容,如有不懂之处,欢迎留言交流。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值