冒泡排序是最简单的排序方法,它的计算次数多,不是最快的,但它是最基本的排序方法。

假设有一个整型数组:2,4,9,1,6,3,5,8,10,7; 要求把它们按从小到大的顺序依此排列。它的实现过程如下:

第一轮比较:从数组第一个元素到数组最后一个元素,相邻的两个元素的值进行比较,数组下标小的数的值大于数组下标大的元素的值时,便交换它们的值。如此下来,最大的值便被放到数组最后一个元素上。总共比较9次。

第一轮比较后的数组: 2,4,1,6,3,5,8,7,9,10

第二轮比较::重复上述步骤,相邻两个元素进行比较,但是这时比较的次数只有八次,因为已经确定最大的值是最后一个,所以无需进行比较。这样,第二大的数就排在数组倒数第二个元素上。

第二轮比较后的数组:2,1,4,3,5,6,7,8,9,10

第三轮比较::同样的,比较过后第三大的数排在倒数第三个元素上。

第三轮比较后的数组:1,2,3,4,5,6,7,8,9,10

可以看到经过三轮比较过后数组已经是满足题目要求的了,但是程序还是会继续进行下一轮比较,直到进行完第九轮(数组长度-1)比较后才停止比较。因此冒泡排序法是比较低效的,当数组原本就是有序时尤为明显。


最后一轮比较后的数组:1,2,3,4,5,6,7,8,9,10

冒泡排序法具体实现如下:

#include <stdio.h>int main()
{int data[10] = {2,4,9,1,6,3,5,8,10,7};int tmp;int i, j;for (i=0; i<sizeof(data)/sizeof(int)-1; i++)     //外层循环,次数为数组长度减1{for (j=0; j<sizeof(data)/sizeof(int)-1-i; j++)    //内层循环,次数为数组长度减外层循环次数再减一{if (data[j] > data[j+1])        //如果数组下标为j的元素的值大于数组下标为j+1的元素的值{tmp       = data[j+1];        //把数组下标为j+1的元素的值存放在tmp中data[j+1] = data[j];      //把数组下标为j的元素的值赋给j+1data[j]   = tmp;           //原来数组下标为j+1的元素的值赋给j}}}for (i=0; i<sizeof(data)/sizeof(int); i++){printf("%d ", data[i]);}printf("\n");return 0;
}

冒泡排序法(C语言实现)相关推荐

  1. 冒泡排序法c语言实验报告,微机原理实验报告-冒泡排序

    <微机原理实验报告-冒泡排序>由会员分享,可在线阅读,更多相关<微机原理实验报告-冒泡排序(12页珍藏版)>请在人人文库网上搜索. 1.一.实验目的(1)学习汇编语言循环结构语 ...

  2. 10个数冒泡排序法c语言代码,输入10个数用冒泡法排序

    输入10个数,用冒泡排序法按由小到大顺序排序并输如下参考: #包括< stdio, h > Intmain() { Inta[10]={0}: IntI=0,j=0,t=0: For (I ...

  3. php语言冒泡法,冒泡排序法(php)

    /** * 排序算法:使一个数列的值按照某个规则进行排序的算法,也可以说是用于确定一个数列中每个值的次序位置的算法. *     在上述定义中涉及数列中每个成员的值和其对应的次序位置(以下简称次位,次 ...

  4. 冒泡排序c java c,冒泡排序,c语言冒泡排序法代码

    冒泡排序,c语言冒泡排序法代码 冒泡排序 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法. 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小.首字 ...

  5. 生活中c语言排序案例,C语言之数字排序-基于冒泡排序法的一些案例(对未知数量的数字进行排序)...

    C语言之数字排序 在学习C语言的时候遇到了几个比较基础的排序问题,又结合了之前的处理方法.觉得在这个需要再系统地进行复习一下. 当我们在初学C语言的时候,我们都会结合三个数字的排序来理解计算机处理问题 ...

  6. C语言——冒泡排序法

    C语言--冒泡排序法 问题描述: 1, 3, 2, 6, 4, 5, 9, 8, 10, 7进行从小到大排序 代码: # include <stdio.h>int main() {int ...

  7. C语言排序方法-----冒泡排序法

    关于冒泡排序百度百科是这样定义的: 算法原理为: 下面直接看C语言代码的实现 //打印数组元素 void printf_nums( int num[], int count ) {int i = 0; ...

  8. 【C语言程序】某班级学习委员整理获得奖学金排名,总成绩=智育成绩*60%+德育成绩*30%+体育成绩*10%,使用冒泡排序法将班级前12名同学的成绩进行排名。

    某班级学习委员整理获得奖学金排名,总成绩=智育成绩*60%+德育成绩*30%+体育成绩*10%,使用冒泡排序法将班级前12名同学的成绩进行排名. 题出自------------------------ ...

  9. c语言冒泡排序法代码(c语言冒泡排序法代码讲解)

    求一个C语言冒泡排序法的简单程序怎么办? 下一趟排序开始时,R[1..lastExchange-1]是有序区,R[lastExchange..n]是无序区.这样,一趟排序可能使当前有序区扩充多个记录, ...

  10. c语言冒泡排序项目总结,C语言冒泡排序法心得

    记得以前在大学里学习c语言的时候,刚开始是很吃力的. 入门级别的算法中有个叫冒泡排序法,也有称为气泡排序法.那时候刚接触它就对它的名字特别感兴趣,因为觉得很有意思.好了,废话不多说了,我们先一起简单回 ...

最新文章

  1. 插槽 查看硬盘状态_摄影路上的“全能”伴侣 | LaCie DJI Copilot 移动硬盘
  2. ASP.Net网站文件类型大全
  3. IDA+OD双剑合璧=逆向无敌
  4. java代码,输入n多个数,求其平均值,虽有重复,但是第二次,我就乱写了
  5. C语言字符串函数大全
  6. python对象_查找Python对象具有的方法
  7. linux内存使用策略swap,Linux Swap使用分析
  8. python3 批量定义多个变量_Python 3.8 新功能大揭秘
  9. tcp 发送 最大数据量_网络基础知识夯实总结(三):TCP协议
  10. [20150304]唯一索引与阻塞.txt
  11. HA3、iGraph和DII服务框架统一之战
  12. Linux配置http代理
  13. 秩为1的矩阵,向量,绩的联合使用
  14. matlab中如何创建使用构架数组?
  15. Php依赖其他模块,3. 强制模块依赖
  16. 【Java8实战】list分组、过滤、统计、排序等常用操作
  17. Flutter 本地数据库sqflite实战操作
  18. 5 分钟,使用内网穿透快速实现远程桌面
  19. SK创新在2019年下半年将实现柔性显示器核心材料FCW量产
  20. 计算机软件操作试题多选,2016职称计算机考试WPS_Office多选试题及答案

热门文章

  1. PHP特性整合 php7特性
  2. python 爬虫 --字符编写问题
  3. Redis之事务的实现
  4. FusionCharts的基本使用(3)
  5. win11 22H2 连接共享打印机失败
  6. Git远程分支管理(四)
  7. nvivo是什么,为什么要学习nvivo,如何学?
  8. 你们要的Java学习路线图,来喽
  9. 国产服务器(aarch64) Kettle 修改
  10. MySQL 客户端安装