排序方法是一种重要的,基本的算法。起泡法的基本思路是:每次将相邻的两个数进行比较,将小的调到前面。若有六个数: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. skywalking原理_Skywalking系列博客6手把手教你编写 Skywalking 插件
  2. exchange2007收件人管理
  3. 从零开始入门 K8s | 理解容器运行时接口 CRI
  4. php的webservice的soapheader认证问题
  5. 你们数学老师当年是怎么叫这些符号的…
  6. PHP中类重写方法,php中重写方法有什么规则
  7. react中的render-props模式
  8. Android判断设备是否打开WIFI、GPRS数据连接
  9. (12)自定义数据流(实战Docker事件推送的REST API)——响应式Spring的道法术器...
  10. 无代码开发究竟是不是伪需求?
  11. linux 扫描开放的端口命令,在Linux系统中检查(扫描)开放端口的方法
  12. 不同应用系统之间数据交互的几种方式
  13. Web前端开发规范之文件存储位置规范
  14. Tensorflow-slim 学习笔记(一)概述
  15. 关于模板类中,子类无法访问父类成员问题的解决方法
  16. Mac卸载Anaconda
  17. 儒家学派有哪些代表人物?
  18. [转载]浙江杭西高2011年5月高二地理(徐霞客游记TV版-
  19. Python爬虫系列之得物小程序data算法
  20. Python 学习单词记忆

热门文章

  1. windows双路由怎么配置
  2. steam客户端点击登录没反应怎么办
  3. hadoop入门程序:词频统计
  4. 通过计算机控制电机的方法,一种计算机控制电机柜的制作方法
  5. js 把字符串转换成对象
  6. python实现KMP算法
  7. 非职业项目经理人的管理精华
  8. 如何理解深度学习中的卷积?
  9. Java实现微信小程序登录注册:获取OpenId和手机号
  10. 全球及中国商业无线雷管行业研究及十四五规划分析报告