c语言比较数组中的元素大小,C语言之数组的冒泡排序
原标题:C语言之数组的冒泡排序
在实际开发中,有很多场景需要我们将数组元素按照从大到小(或者从小到大)的顺序排列,这样在查阅数据时会更加直观,例如:
l 一个保存了班级学号的数组,排序后更容易分区好学生和坏学生;
l 一个保存了商品单价的数组,排序后更容易看出它们的性价比。
对数组元素进行排序的方法有很多种,比如冒泡排序、归并排序、选择排序、插入排序、快速排序等,其中最经典
最需要掌握的是「冒泡排序」。
以从小到大排序为例,冒泡排序的整体思想是这样的:
l 从数组头部开始,不断比较相邻的两个元素的大小,让较大的元素逐渐往后移动(交换两个元素的值),直到数组的末尾。经过第一轮的比较,就可以找到最大的元素,并将它移动到最后一个位置。
l 第一轮结束后,继续第二轮。仍然从数组头部开始比较,让较大的元素逐渐往后移动,直到数组的倒数第二个元素为止。经过第二轮的比较,就可以找到次大的元素,并将它放到倒数第二个位置。
l 以此类推,进行 n-1(n 为数组长度)轮“冒泡”后,就可以将所有的元素都排列好。
整个排序过程就好像气泡不断从水里冒出来,最大的先出来,次大的第二出来,最小的最后出来,所以将这种排序方式称为冒泡排序。
从以上的过程来看冒泡排序需要用循环来控制,并且还需要两层循环,一层循环用来控制比较的轮数,一层循环用来控制数组元素的比较。
下面我们以“53412”为例对冒泡排序进行说明。
第一轮:
从第一个元素开始,往后两两排序,数较大的往后去。
53比较:5大于3,5往后移;35412;
54比较:5大于4,5往后移;34512;
51比较:5大于1,5往后移;34152;
52比较:5大于2,5往后移;34125;
第一轮结束,此时数组中的最大的数已经比较出来了。
第二轮:
还是在数组的第一个元素开始,往后比较。
34比较:3小于4,4不用后移;34125;
41比较:4大于1,4往后移;31425;
42比较:4大于2,4往后移;31245;
45比较:4小于5,4不用往后移;31245;
第三轮开始,依次往后比较,这里请大家自己演示。
我们来看看这个例子的运行效果:
/*从小到大排列*/
#include
int main()
{
int a[5], i, j,max;//i控制数组元素的下标,j控制的是轮数
printf("请输入数组:\n");
for (i = 0; i < 5; i++)//这层循环控制的是数组的输入
{
scanf_s("%d", &a[i]);
}
for (j = 1; j < 5; j++)
{
for (i = 0; i < 4; i++)
{
if (a[i] > a[i + 1])//比较出最大的数
{
max = a[i];
a[i] = a[i + 1];
a[i + 1] = max;
}
}
}
for (i = 0; i < 5; i++)//数组的输出
{
printf("%d\t", a[i]);
}
return 0;
}
在这里需要注意的有几点:
第一点:数组有多长,控制趟数的变量(文中是j),就要小于那个长度。
第二点:控制数组元素比较的变量(文中是i),要小于用(数组的长度减去1)。
好了今天的冒泡排序你学会了吗?返回搜狐,查看更多
责任编辑:
c语言比较数组中的元素大小,C语言之数组的冒泡排序相关推荐
- JavaScript求数组中每个元素的个数,如数组str = [1,2,3,2,4,1,2]中元素2的个数为2。要求:使用对象知识来实现,输出结果为对象,对象包含数组元素和个数值。
求数组中每个元素的个数,如数组str = [1,2,3,2,4,1,2]中元素2的个数为2. 要求:使用对象知识来实现,输出结果为对象,对象包含数组元素和个数值. <script>var ...
- 删除数组中指定元素_如何删除PHP数组元素键值并重新排序
点击蓝字关注我们!每天获取最新的编程小知识! 源 / php中文网 源 / www.php.cn 想要删除PHP数组中某个元素键值,然后重新规范索引排序.我们可以使用PHP中的内置函数uns ...
- php 比较数组中的元素,php – 比较多维数组中的元素
说我有一个多维数组.例如: Array ( [0] => Array ( [animal_id] => 5494 [animal_name] => "Suzy" ...
- 删除数组中重复元素(C语言)
编写函数,删除数组中所有的重复元素,使数组变成一个集合,函数返回集合中元素的个数. 书上习题 #include<stdio.h> int set(int a[],int n) {int i ...
- java输出数组中的元素_java一行代码输出数组的所有元素内容
如果要用java把一个数组的元素都输出到控制台的话,你要怎么做呢? 是通过一个循环去循环数组中的各个元素,然后输出吗? 像不像二维数组 今天我要说的是,可以通过一行代码就完成这个工作.是一样什么样的代 ...
- 数组中相同元素 java_如何在一维数组中查找某重复元素,并输出其位置?用java实现...
这种情况适合使用 Map,Map 的键 为 nums 中的整数,值 为 nums 中整数的所有位置 -- 位置数大于 1,那么说明该整数在数组中重复 import java.util.*; publi ...
- c++ 返回数组中最大的值_Swift语言必学秘技:数组里面的使用方法
Swift语言必学秘技:数组里面的使用方法 这一期我们来说一下Swift语言里面数组的应用方法. 在Swift语言中,数组中可以放入任何类型的数据.这些数据包括整型,字符串,甚至是对象. 第一部分, ...
- php 两个数组中不同的元素,PHP实现查询两个数组中不同元素的方法
这篇文章主要介绍了PHP实现查询两个数组中不同元素的方法,涉及PHP数组差集运算与数组合并的相关技巧,需要的朋友可以参考下 本文实例讲述了PHP实现查询两个数组中不同元素的方法.分享给大家供大家参考, ...
- php删除二维数组元素_php怎样删除二维数组中的元素
php怎样删除二维数组中的元素 发布时间:2020-11-03 10:22:40 来源:亿速云 阅读:68 作者:小新 这篇文章主要介绍了php怎样删除二维数组中的元素,具有一定借鉴价值,需要的朋友可 ...
最新文章
- python __setattr__ , __getattr__
- Python知识点5——字典
- Connection reset by peer原理解析
- window 下生成SSH key
- 十年前的网易,新浪,维基百科,百度百科在手机上的打开效果
- lamp php5.5,CentOS 5.5快速搭建Apache+PHP5+MySQL完美Web服务器(LAMP)
- apache OFBiz的安装
- 将ANSYS里的数据导入MATLAB的步骤
- c++异步日志队列_Logback 配置文件这么写,日志 TPS 提高 10 倍
- 玩转springboot2.x之搭建Thymeleaf官方示例程序
- 查看你所使用计算机的网卡信息,查看网卡信息命令
- SCOM2012SP1环境准备和安装
- 酒店客房管理系统需求分析报告
- java定义一个二维数组
- modbus tcp主站和从站_实例讲解PLC实现modbus通讯
- 做一个自己的PC微信无感免打扰检测僵尸粉死粉的小工具。使用c++ call
- laravel对象转数组
- 关于CASS点自动连线方法
- CSS 权威指南 CSS实战手册 第四版(阅读笔记)
- java sha1加密ascii码_MD5,SHA1,SHA256,SHA512等常用加密算法
热门文章
- CorelDRAW VBA - 打开选择文件夹对话框
- 适配动态 | 2月份SequoiaDB与7款产品完成互认证
- 斐波那契数列和青蛙跳台阶问题
- STM32学习笔记之Bootloader升级Ymodem协议简介
- 支付宝转账(实现用户提现功能)
- 打工皇帝刘炽平与他的国:未来的腾讯主人?
- c语言 office 二级成绩查询,2019年9月辽宁计算机二级考试成绩查询入口
- android view ondestroy,Android片段onCreateView在onDestroy之后不再調用。
- [可视化]时间线的7种设计方式
- SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder