排序方法是一种重要的,基本的算法。起泡法的基本思路是:每次将相邻的两个数进行比较,将小的调到前面。若有六个数:9,8,5,4,2,0,可以按照下图方式进行对调排序。

第一趟比较先将第一个数9与第二个数8对调,再将第二个数9与第三个数5对调,进行五此后可以得到854209,最大的9已“沉底”,最小的数0已“浮起”。然后第二趟比较再将余下的五个数进行新一轮比较。按照规律进行下去n个数比较n-1次比较,n个数比较时第m趟需要n-m次比较,这种如水底的旗袍冒出水面一样的方法称为起泡法。

我们可以根据此画出流程图并据此写出程序(设n=10)

#include <stdio.h>
int main()
{int a[10];int n,m,k;printf("input 10 numbers:\n");for(n=0;n<10;n++)scanf("%d",&a[n]);for(m=0;m<9;m++)                               //进行九次循环,实现九次比较for(n=0;n<9-m;n++)                         //在每次循环中进行9-m次比较if(a[n]>a[n+1])                        //相邻两数比较{k=a[n];a[n]=a[n+1];a[n+1]=k;       //将大的数放到后面}printf("the sorted numbers:\n");for(n=0;n<10;n++)printf("%d ",a[n]);return 0;
}

输出结果:

程序分析:执行第一次外循环时,m=0,随后执行第一次内循环,此时n=0,在if语句中将a[0]与a[1]进行比较,执行第二次内循环将a[1]与a[2]进行比较,直到a[8]和a[9]比较后第一趟内循环结束,进行第二次外循环,以此类推。

同样的,我们也可以使用起泡法对字符进行排序

#include <stdio.h>
#include <string.h>
#define N 10
char str[N];
int main()
{void sort(char[]);                                //声明函数int i,flag;for(flag=1;flag==1;){printf("input string:\n");gets(str);if(strlen(str)>N)printf("string too long,input again!");elseflag=0;                                   //退出循环体}sort(str);printf("string sorted:\n");for(i=0;i<N;i++)printf("%c",str[i]);printf("\n");return 0;
}void sort(char str[])
{int i,j;
char t;
for(j=1;j<N;j++)                                      //与上例相同for(i=0;i<N-j;i++)if(str[i]>str[i+1]){t=str[i];str[i]=str[i+1];str[i+1]=t;}
}

输出结果:

这就是起泡法的大致流程,排序的算法有很多,重要的是要了解和掌握解题思路,学会分析问题,建立算法,以及如何利用c语言的编程的技巧。

c语言数的排序问题(起泡法)相关推荐

  1. C语言冒泡排序(起泡法)

    C语言冒泡排序(起泡法) 冒泡法排序是C语言中较简单的 排序算法 的 . 定义:它重复地走访过要排序的元素列,依次比较两个相邻的元素,让较大的元素逐渐往后移动(交换两个元素的值),直到数组的末尾.如此 ...

  2. C语言排序之冒泡法(起泡法)

    C语言排序之冒泡法(起泡法)@C语言排序之冒泡法(起泡法) 冒泡的本质还是两两比较,第一次把最大或最小的选出来,第二次把老二选出来,这样的话就会少比一次,就这样循环下去就行啦,无非就是循环的嵌套,下面 ...

  3. (19)写一个函数,用”起泡法“对输入的10数字符按由小到大顺序排列

    用"起泡法"对输入的10数字符按由小到大顺序排列 起泡法:即每一次将相邻两个数进行比较,若符合条件则交换两个数的值.每进行一趟排序,最大的一个数变成最后一个数.以此类推,直至整个数 ...

  4. C语言>>写一函数,用“起泡法”对输入的10个字符由小到大排序。

    使用工具: Dev-C++ 5.11 解题思路: "起泡法"思路为:将相邻两个数比较,将较小的调到前头,较大的放到后头.经过1轮比较后,最大的数便调到最后一个位置.所以n个数要比较 ...

  5. C语言定义起泡法函数对n个数,C语言程序设计第10讲.ppt

    C语言程序设计第10讲 7.4.3 对被调用函数的说明 自定义函数: float factorial ( int n ) { float x, y ; for( x=y=1.0; x<=n; x ...

  6. 写一个函数,用“起泡法”对输入的10个字符按由小到大顺序排列

    写一个函数,用"起泡法"对输入的10个字符按由小到大顺序排列(C语言) 题目要求:如标题,起泡法是一种重要的.基本的的排序算法 思路: 每次将相邻两个数比较,将较小的调到前面 若有 ...

  7. c语言创造线性表储存复数,《c语言数结构》第02章 线性表.ppt

    <c语言数结构>第02章 线性表 第1章回顾 数据结构课程-- 数据结构+算法=程序,涉及数学.计算机硬件和软件. 数据结构定义--指互相有关联的数据元素的集合,可用data_Struct ...

  8. C语言答案写成科学记数法,c语言科学记数法_C语言中、科学计数法123456e+002具体代表什么意思、或者说怎么理解这个数_淘题吧...

    『壹』 c语言用double写了一个表示科学计数法的程序,但是却读不出来30位以上的数,怎么办 double 是抄64 位(8字节),52 位代表有袭效数位,11 位表示指数,一位表示符号,精度(有效 ...

  9. 起泡法排序(十个数)

    #include<stdio.h> int main(void){int i,j,t;int a[10];printf("Please enter ten numbers:\n& ...

最新文章

  1. Python脚本:聚类小分子数据集
  2. ThinkPHP 分页实现
  3. python比前端好学吗_前端学习到底难不难?
  4. django表与表之间的关系
  5. cocos2d-x初探学习笔记(5)--动作管理
  6. java计算并显示学生的成绩_Java开学测试-学生成绩管理系统
  7. JAVA进阶day07JNI(java调用c)A部分
  8. php mysql5.7.110安装教程_MYSQL教程mysql5.7.19 winx64安装配置方法图文教程(win10)
  9. 19.复习:一般过去时、过去进行时和过去完成时
  10. Spring Boot 定时任务,怎么实现任务动态增删启停?
  11. C++11 random库
  12. 施密特:下个千亿美元市值公司将出在哪个行业
  13. unity使用屏幕后处理实现闪烁特效,创建新的shader文件过程
  14. 路由器安装教程和使用方法
  15. 2019年中国公有云厂商发展状况白皮书
  16. php重构求圆柱圆锥的体积,圆锥的体积 - 彭阳县第二小学数学教研社区 - 宁夏教育云...
  17. 谷歌Mediapipe运行环境配置
  18. 感冒发烧不宜吃的食物与可以吃的食物
  19. 技术总监之路——App项目开发流程
  20. Echarts显示数据被遮挡了

热门文章

  1. 遭遇Trojan.DL.Multi.wfg(sss.exe、SCVHOST.EXE、autorun.inf)等
  2. r5 5600g和i5 11600k参数对比选哪个好
  3. 练习1-递推(找数字\街区\铺砖)
  4. iOS 获取当前屏幕显示的viewcontroller
  5. 霍金为什么伟大?科普影响力无人能及(转自腾讯新闻)
  6. 一篇文章带你搞定 Pygame 中 RECT类(get_rect中的 left,right,top,bottom)解释
  7. RS-485总线网络中的抗雷击技术
  8. office很抱歉遇到一些临时服务器问题
  9. Kudu-Java-api操作表(DDL)
  10. nodejs可以用来做什么