基于C语言的几种排序方法比较.doc

基于C语言的几种排序方法比较 【摘要】文章对c语言中的冒泡排序法、选择排序法、插入排序法进行比较讨论,以试图找出最佳排序方法。 【关键词】c语言;排序方法;比较 引言 排序是计算机程序设计中的一种重要操作,其作用是将一个数据元素(或记录)的任意序列重新排列成一个(按关键字)有序的序列[1]。按照排序记录数量分为内部排序及外部排序两类。若整个排序过程不需要访问外存便能完成,则称此类排序为内部排序。反之,若参与排序的记录数量很大,使内存不能一次容纳全部的记录,所以排序过程中需要对外存进行访问,则称此类排序为外部排序。 换句话说,内部排序仅适合待排序记录数量相对较少的序列。内部排序方法分类较多,按照排序过程依据的原则不同分类,大致分为五类:插入排序、交换排序、选择排序、归并排序和基数排序等。这里介绍的冒(起)泡排序大致属于交换排序中的一种排序方法,下面将就c语言中冒泡排序法、选择排序法、插入排序法进行比较讨论,以试图找出最佳排序方法. 1.冒泡排序法(起泡法) 1.1 冒泡排序算法分析 冒泡法算法分析:如果有n个待排序数据,需要进行n-1趟比较。在第1趟比较中,要进行n-1次相邻元素的两两比较,在第j趟比较中要进行n-j次两两比较。比较的顺序从前往后,经过一趟比较后,将最值沉底(换到最后一个元素位置),最大值沉底为升序,最小值沉底为降序。 1.2 实现冒泡排序算法c语言源程序清单 #include #include main( ) int *a , i ,j , t, n ; printf ( “请输入需排序元素个数 : n ” ); scanf(" %d",&n); a (int *)malloc(sizeof(int)*n); printf ( “请输入每个数组元素 :” ); for (i 1;i< n;i i+1) scanf(“ %d”,&a[i]); for (i 1;i< n-1;i++) for (j 1;j< n-i;j++) if (a[j]>a[j+1]) t a[j];a[j] a[j+1];a[j+1] t; printf( “排序后的数组为 : “); for (i 1;i< n;i i+1) printf ( "%d ",a[i]); 1.3 冒泡排序算法特点 相邻元素两两比较,每趟将最值沉底即可确定一个数在结果的位置,确定元素位置的顺序是从后往前,其余元素可能作相对位置的调整。可以进行升序或降序排序。 该排序方法的优点是比较原则简单,排序序列相对稳定;缺点是速度慢,每次只能比较移动相邻两个数据,每一趟只能减少一个数据,参与排序的记录数量相对较少。 2.选择排序法 2.1 选择排序算法分析 选择排序法的算法分析:每趟选出一个最值和无序序列的第一个数交换,n个数共选n-1趟。第i趟假设i为最值下标,然后将最值和i+1至最后一个数比较,找出最值的下标,若最值下标不为初设值,则将最值元素和下标为i的元素交换。 2.2 实现选择排序算法c语言源程序清单 以降序为例: #include #include main( ) int *a , i ,j , t,k, n ; printf ( “请输入需排序元素个数 : n ” ); scanf(" %d",&n); a (int *)malloc(sizeof(int)*n); printf ( “请输入每个数组元素 :” ); for (i 0;i

c语言几种排序方法的比较,基于C语言的几种排序方法比较.doc相关推荐

  1. c语言的tlv协议编解码函数,基于C语言的TLV格式协议快速解析方法与流程

    技术特征: 1.基于C语言的TLV格式协议快速解析方法,其特征在于,在客户机上设有编译器和解析器,在服务器上也设有编译器和解析器,从而使客户机和服务器都同时具备编码能力和解码能力:客户机和服务器通过网 ...

  2. c语言逻辑运用及宏程序编写,基于C语言基础的宏程序编程

    基于C语言基础的宏程序编程 王恒厂,周燕飞,姚裕,吕常奎 (南京航空航天大学工程训练中心,江苏南京211100) 摘 要:用户宏指令编程是FANUC系统所提供的一种先进的编程方法[1],使用变量代替程 ...

  3. c语言编写订货系统,学位论文_基于c语言的仓库订货系统的仿真.doc

    学位论文_基于c语言的仓库订货系统的仿真 本科毕业论文(设计.创作) 题目: 基于C语言的仓库订货系统的仿真 学生姓名: 学号: 所在系院: 信息与通信技术系 专业: 电子信息工程 入学时间: 201 ...

  4. c语言通用数据结构和常用算法库,基于C语言的通用数据结构和算法库

    本人最近在学习数据结构的课程,在过程中发现用C语言来实现各种数据结构类型的时候很难做到真正意义上的通用的数据结构,于是在网上搜罗了一些所谓的C语言通用数据结构库,在此也将这些数据结构库一一罗列,方便大 ...

  5. 基于c语言的数字pid控制算法及实现,基于C语言的数字PID控制算法及实现.pdf

    科技创新导报 20 10 N O .30 Science and Technology Innovation Herald I T技 术 基于C 语言的数字P I D 控制算法及实现 卢亚平 ( 苏州 ...

  6. C语言五子棋禁手算法的编写,基于C语言的五子棋辅助软件的设计与实现.doc

    基于C语言的五子棋辅助软件的设计与实现 广东工业大学 本科毕业设计(论文) 基于C语言的五子棋辅助软件的设计与实现 系 部 专 业 年 级 班级名称 学 号 学生姓名 指导教师 2012 年 5 月 ...

  7. 病例对照研究中—两组组间比较—的统计方法选择,基于R语言

    医学中最常设计的试验就是病例对照研究,以探究某一干预措施是否有改善性.需要根据基线的情况,选择相应的方法. 试验数据如下: (声明:该数据是随机自动生成的,虚拟的,该计算结果不代表任何真实的事情,该数 ...

  8. R语言应用实战系列(二)-基于R语言的方差分析

    前言 回归分析重点考察变量间的相关关系或因果关系,当包含因子是解释变量时,关注点通常是从变量间的关系转向组与组之间的差异分析,这种分析样本组之间的区别的方法称为方差分析(Analysis of Var ...

  9. C语言LMS双麦克风消噪算法,基于两个时域LMS算法双麦克风系统分析.doc

    基于两个时域LMS算法双麦克风系统分析 基于两个时域LMS算法双麦克风系统分析 [摘要] 本文介绍了基于两个时域LMS算法的双麦克风系统结构以及性能分析.本文提出一种采用两个时域LMS的算法,并将此算 ...

最新文章

  1. Linux2017Linux架构师!
  2. 小技巧,怎么让MFC的MDI程序子窗口看起来有扁平的效果
  3. 笨办法学 Python · 续 练习 8:`cut`
  4. mysql sync es 异步双写_mysql数据同步es方案思考
  5. c语言context窗口,如何在gtk3中为窗口小部件设置特定的css类? (C)
  6. java 回溯_java 实现迷宫回溯算法示例详解
  7. 未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序搜索
  8. [Leetcode][JAVA] Populating Next Right Pointers in Each Node II
  9. “工业革命4.0”时代,智能汽车应是什么样?
  10. 马云点名的工程师,除了几百封求爱信还有13项区块链专利
  11. 用Excel制作二维码
  12. 如何修复dns服务器,如何修复DNS?DNS是什么?如何设置DNS?
  13. php获取月初月末时间戳
  14. 我的世界服务器末地文件在哪,我的世界:找不到末地城怎么办?巧用2个操作,就能瞬间找到!...
  15. 华硕Fonepad 8、MeMO Pad 7以及MeMO Pad 8也随之登场
  16. 排序刷默认值sql脚本
  17. UDS之浅谈11服务
  18. 【Flume】(四)IDEA编写自定义拦截器
  19. 【环境安装】ubuntu18.04利用opam安装指定版本的coq工作环境
  20. tree命令生成目录树

热门文章

  1. AI一体机高速自由流收费稽核解决方案
  2. 漫画通信:一图看懂通信发展史
  3. 使用CLONE TABLE方式实现同region不同可用区的MaxCompute
  4. 使用容器服务支持开发者快速搭建小程序后端服务
  5. Pod Preset玩转K8S容器时区自动配置 1
  6. 一文看清深圳云栖阿里云重磅产品发布
  7. 梁胜:开源是最好的商业模式
  8. “精耕细作”桌面云市场的锐捷,重磅发布三擎云桌面
  9. 很用心的为你写了 9 道 MySQL 面试题,建议收藏!
  10. 腾讯云数据库Redis助力百万企业远程办公