c 冒泡排序_C语言中选择排序和冒泡排序
点击上方“C语言中文社区”,选择“设为星标★”
技术干货第一时间送达!
来源:https://blog.csdn.net/zjy18886018024/category_7741145.html
今天给大家分享一些关于C语言的算法,选择排序和冒泡排序。
对于选择排序,首先理解排序的思想。给定一个数组,这种思想首先假定数组的首元素为最大或者最小的。此时就要利用3个变量表示元素的下标。一个表示当前,一个表示找到的最大或者最小的下标,一个用于存放每次循环中最大值的下标。在掌握了程序的基本思想之后,再进行排序。找到最大的下标后赋给每次除非的那个最大的下标。找到之后判断所假设的当前值是否为此次循环的最大值,如果不是,就交换最大 与当前的值,从而将数组以一定的顺序排放,最后写一个循环将结果输出。代码不是很难,所以我就逐步讲解了,只是附上代码,不懂的可以给我留言,我给大家讲解或者有什么不好的地方,我也好修正。
#includevoid main()//主函数{ int a[10]; int i,j,w; printf("请输入10个数字:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10;i++) { for(j=0;j<10;j++) if(a[i]//进行比较//比较后进行交换{ w=a[i]; a[i]=a[j]; a[j]=w;} }printf("排序后:\n"); for(i=0;i<10;i++) printf("%4d",a[i]); printf("\n");}
结果展示:
接下来是冒泡排序,这个是C语言中最常用的算法之一,因为这个比较容易理解,多数人在他们要进行排序的时候首先使用的就是这个算法。这个算法比较容易理解。对于冒泡排序,主要采用的是相邻数两两进行比较的思想。如果后一个比前一个大或者小,则将其调换位置,直至所有的数都比较完。如果给定一个大小为n的数组,那么需要比较n-1趟,每一趟比较n-1-i次 ,i 表示上次循环中已经比较完的下标。写两个循环判断,如需交换则进行交换,如果不需要交换则进行下两个数的比较,直到所有的数比较完。最后,用一个循环将排序完成后的数全部输出。代码如下:
#include#define N 10void main(){ int a[10]; int i,j,t; printf("请输入10个数字:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]);//使用两层循环 for(i=0;i-1;i++) { for(j=i+1;j1);j++) if(a[j]1]){ t=a[j]; a[j]=a[j+1]; a[j+1]=t;}}printf("排序后:\n"); for(i=0;i<10;i++) printf("%4d",a[i]); printf("\n");}
结果:
结论浅说:
对于选择排序的分析是很简单的,输入的规模由数组元素决定,基本操作是键值比较A[j]
冒泡排序就是相邻两个数相比较,大数就沉底(或者小数上浮的过程),总共进行了n-1次比较和交换。上面的冒泡算法为了便于算法的实现,所以考虑只使用一个一维数组来存放10个整型数据。排序过程中数据始终在这个数组中(原地操作,不占用额外的空间)。所以该算法的时间复杂度为O(n-1),空间复杂度为O(1)。
精选文章
围观
更新一波资源,请快速领取!
热文
超级干货:Linux常用命令 & 实用命令万字总结!
热文
文件操作之fprintf和fscanf函数
热文
计算机网络基础知识总结
热文
C/C++学习笔记——C提高:指针强化
【END】
如果您觉得本篇文章对您有帮助请转发给更多的人
顺手点一下“在看”也是对小编最大的支持
c 冒泡排序_C语言中选择排序和冒泡排序相关推荐
- Java中选择排序,冒泡排序,插入排序,快速排序
一:冒泡法排序 //冒泡排序 注:从小到大排 //特点:效率低,实现简单 //思想:每一趟将待排序序列中最大元素移到最后,剩下的为新的待排序序列,重复上述步骤直到排完所有元素. 这只是冒泡 ...
- java中选择排序和冒泡排序_Java选择排序就是比冒泡排序牛「具体详情,请看此文」...
什么是选择排序 选择排序原理即是,遍历元素找到一个最小(或最大)的元素,把它放在第一个位置,然后再在剩余元素中找到最小(或最大)的元素,把它放在第二个位置,依次下去,完成排序. 时间复杂度 选择排序的 ...
- c语言入门中冒泡排序的例题,选择排序和冒泡排序例题解析(c语言)
排序算法排序算法 1.简单选择排序简单选择排序 假设有 n 个数,作简单选择排序简单选择排序,按升序排列: 先通过 n-1 次比较,从 n 个值中找出最小值,将它与第一个值交换. 再通过 n-2 次比 ...
- 蛮力法查找有序数列c语言,算法——蛮力法之选择排序和冒泡排序c++实现
这次实现的是蛮力法中的两个例子,选择排序法和冒泡排序法,使用的编译环境是vs2013,下面对这两个算法做一个简单介绍,然后是两个算法的c++实现代码. 选择排序法比较的范围是整个列表,每次扫描结束找出 ...
- C语言排序算法之简单交换法排序,直接选择排序,冒泡排序
C语言排序算法之简单交换法排序,直接选择排序,冒泡排序,最近考试要用到,网上也有很多例子,我觉得还是自己写的看得懂一些. 简单交换法排序 1 /*简单交换法排序 2 根据序列中两个记录键值的比较结果来 ...
- 选择排序法和冒泡排序法
选择排序法和冒泡排序法 1.选择排序法(以从小到大排序为例) 算法思想: A.在未排序序列中找到最小(大)元素,存放到排序序列的起始位置 B.从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序 ...
- c语言中怎么排序,c语言中的排序方法.doc
c语言中的排序方法 排序技术 所谓排序,就是要整理的文件中的记录,使之按关键字第增(或第减)的次序排列起来. 常用交换类排序 冒泡排序法是一种最简单的交换类排序方法,它是通过相邻数据元素的交换逐步将线 ...
- Java小结(四)——折半查找、选择排序、冒泡排序
最常见的一些基本算法,比如折半查找,选择排序,冒泡排序. 折半查找,是它是一种效率较高的查找方法.但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列 即数组内元素必须是 ...
- 排序算法:冒泡排序、插入排序、选择排序、希尔排序
相关博客: 排序算法:冒泡排序.插入排序.选择排序.希尔排序 排序算法:归并排序.快速排序 排序算法:桶排序.计数排序.基数排序 排序算法:堆排序 十大排序算法小结 一.冒泡排序: 1.算法原理: 冒 ...
最新文章
- java 模仿支付成功_Java工程师薪资为何这么高?60W年薪如何轻松拿到手
- 单细胞转录组数据整合分析专题研讨会(2019.11)
- Linux上端口开放常用命令
- 什么时候使用Apache Camel?
- Codeforces 552C Vanya and Scales(进制转换+思维)
- Node.js与网络:Node.js对TCP、UDP、Socket、HTTP等协议的实现和支持
- golang redis 队列删除图片
- 深入浅出MFC:《深入浅出MFC》入手基础指南
- oracle数据库表格连接数据库,excel中连接表格数据库-excel怎样连接oracle数据库(白痴级提问)...
- 领导力教练:世界著名企业教练们的实践心得(原书第3版)
- Word2013批量修改图片尺寸
- Java异常泄露敏感信息_浅谈“异常信息泄露(应用程序错误)”
- 【WiFi】WiFi 2.4G信道国家码对应关系
- 一件程序猿T恤的故事
- 三表左连接sql语句例子
- 计算机基础_001_栈是什么
- 自动生成sitemap地图PHP代码
- 中国云服务市场已达66亿美元:阿里云、百度智能云等市占率位列前四
- Kali WIndows 漏洞利用基础篇 (探索目标主机漏洞)
- Chrome 常用翻译/Github工具/提高工作、生产效率插件
热门文章
- 计算机基础ABCDEF,计算机应用基础-在线作业abcdef(76页)-原创力文档
- 归并排序改良 java_Java 八种排序算法总结
- python教程:一篇文章让你理解字符串的格式化
- Linux优化不知如何下手?那你的看看这篇文章了
- 三角函数公式、诱导公式
- opencv cv2.flip()函数(图像翻转、镜像、颠倒)(沿x轴翻转0、沿y轴翻转【正值】、同时沿x轴y轴翻转-【负值】)
- pyrealsense2 sensor.get_option_description 报错 RuntimeError: object doesn't support option #14
- CSDN博客导出备份工具
- PyQt4编程之简短地做出多个选择框
- Navicat连接SQL Server报错未发现数据源名称并且未指定默认驱动程序