• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C语言冒泡排序法心得

C语言冒泡排序法心得

作者:醉酒清风 字体:[增加 减小] 来源:互联网 时间:2017-05-28

醉酒清风 通过本文主要向大家介绍了c语言冒泡排序算法,冒泡排序c语言代码,c语言冒泡排序,冒泡法排序c语言,c语言冒泡排序原理等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

记得以前在大学里学习c语言的时候,刚开始是很吃力的.

入门级别的算法中有个叫冒泡排序法,也有称为气泡排序法.那时候刚接触它就对它的名字特别感兴趣,因为觉得很有意思.好了,废话不多说了,我们先一起简单回忆下这个冒泡排序法.

 一.打印行和列一般是这样的一个简单代码,输出4行4列*:

for(int i = 1,i < 5,i++){
   for(int j = 1,j < 5,j++){
   printf("*");
  }
  printf("n\");
}
</div>

 二.打印"上三角":

for(int i = 1,i < 5,i++){
   for(int j = 1,j < i,j++){
   printf("*");
  }
  printf("n\");
}
</div>

三.打印"下三角":

for(int i = 1,i < 5,i++){
   for(int j = i,j < 5,j++){
   printf("*");
  }
  printf("n\");
}
</div>

四.看官莫急,关键的地方等会就来了.冒泡排序其实就是一个"下三角"打印原理,因为在一个数组中排序每次都是从第一个元素开始和后面的元素比一轮,确定一个最值,最值就"沉"到最后一个了,每轮比较都会少一个数,所以冒泡排序原理就要用到打印"下三角原理了":

for (int i = 0; i < 4; i++) {
    for (int j = i; j < 4; j++) {
      if (nums[j] < nums[j+1]) {
        int temp = nums[j];
        nums[j] = nums[j+1];
        nums[j+1] = temp;
      }
    }
    
  }

</div>

细心的朋友应该会发现,这样排序一个数组后结果并不会预期的结果,可是我明明用的是"打印下三角"啊!记得当时老师给我们这样一个作业,让大家回去想想,提示用"下三角"原理打印,当时感觉好坑爹啊!(所以对这个冒泡排序法印象到现在还印象挺深的)

五.是的,这个是有一些小细节的,我当时琢磨了好一阵,后来终于发现了问题了,是因为下一轮每次比较都要从最前面的数开始与后面的数比较,如果改变初始化的值,第一个数只能与第2个数比较一次后就不会参与下一轮的比较了.所以我们应该把这个换一种形式

for (int i = 0; i < 4; i++) {
    for (int j = 0; j < 4-i; j++) {
      if (nums[j] < nums[j+1]) {
        int temp = nums[j];
        nums[j] = nums[j+1];
        nums[j+1] = temp;
      }
    }
    
  }

</div>

六.哈哈,原理是不错的,换了一种形式后就输出没问题了.

七.补充一点,一般都回把4替换为一个变量,比如length,或者使用宏定义的方法,个人感觉宏定义更好点. 当使用length的时候,要把length-1,这样有一个好处,就是防止越界问题,而且排序比大小的时候最后一个剩下的本来也不用去比较.所以length-1是没问题的.

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 常用的C语言排序算法(两种)
  • C语言冒泡排序法心得
  • C语言实现冒泡排序算法
  • c语言冒泡排序法代码

相关文章

  • 2017-05-28深入sizeof的使用详解
  • 2017-05-28c++实现加载so动态库中的资源
  • 2017-05-28排列组合总结:将结果进行输出的实现方法
  • 2017-05-28深入C++拷贝构造函数的总结详解
  • 2017-05-28深入分析:C++模板究竟会使代码膨胀吗
  • 2017-05-28C++ read函数读入int整形数据
  • 2017-05-28C++简单输出钻石菱形图效果
  • 2017-05-28c++基础语法:构造函数初始化列表
  • 2017-05-28最大对称字符串的算法
  • 2017-05-28C语言实现输入一颗二元查找树并将该树转换为它的镜像

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 浅析c#中WebBrowser控件的使用方法
    • C++中Overload,Override,Hide之间的区别
    • 合并排序(C语言实现)
    • C++实现 vector 的四则运算
    • C++中的三种继承public,protected,private详细解析
    • Cocos2d-x学习笔记之CCLayerColor层的使用实例
    • 字典树的基本知识及使用C语言的相关实现
    • 详解C++编程中的sizeof运算符与typeid运算符
    • 基于c++中的默认拷贝函数的使用详解
    • 探讨:用两个栈实现一个队列(我作为面试官的小结)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有