通过下列一维数组的几个经典实例的学习,读者需要掌握数组常用操作的编程方法。与此同时,这些实例中有关数组的操作语句可以直接或略加改动后嵌入其他应用程序中作为预制件使用。
1.求数组的极值
【例6.3】求数组元素中的最大值max和最小值min。
程序运行结果:
请输入8个整数:5 23 6 8 34 15 86 -8
最大值max为86,最小值min为-8
本例中,程序首先将第一个元素group[0]作为比较大小的参照物,把group[0]的值赋给变量max和min,当作它们的初值。其后通过循环语句将数组中余下的元素依次与max和min进行比较,若超过max,则取代原max成为新的max;若小于min,则取代原min成为新的min。这样比较完所有的数组元素后,max和min中保留的就是整个数组中的最大值和最小值。
执行过程如下:
结果:max=86 min=-8
2.线性查找
【例6.4】线性查找,即从数组term[10]的第一个元素开始,依次将要查找的数x和对数组中的元素比较,直到找到该数或找遍整个数组为止。
程序运行结果:
请输入需要查找的数字x:12
数组中没有找到12
运行该程序重新查找一个新数。
运行结果:
请输入需要查找的数字x:21
21在数组中,是term[5]
3.冒泡排序
排序是数据处理中的一项重要运算,在很多的实际运用中都会用到。例如,期末考试结束后,需要将本专业的学生按照总分或者平均分进行排序;在浏览文件时,按文件的修改时间或者容量大小进行排序等。
排序一般是针对同一类型数据,就需要用到数组。排序是数组的基本应用之一。
排序一般分为两种:
①升序排序:元素从小到大排列。
②降序排序:元素从大到小排列。
冒泡排序又称为交换排序,是一种简单而又经典的排序方法。排序过程(升序为例):
①从最后一个元素开始,两两相邻元素进行比较,将较小的元素交换到前面,直到把最小元素交换到最前面为止——第一趟冒泡排序,结果最小的数被安置在最前面一个元素位置上。
②对后N-1个数进行第二趟冒泡排序,结果使次小的数被安置在第2个元素位置。
③重复上述过程,共经过N-1趟冒泡排序后,排序结束。
冒泡排序法对以下七个元素进行升序排序为例来学习冒泡排序的工作过程。
步骤如图6-2—图6-7所示。
图6-2 冒泡排序第一轮比较
图6-3 冒泡排序第二轮比较
图6-4 冒泡排序第三轮比较(www.daowen.com)
图6-5 冒泡排序第四轮比较
图6-6 冒泡排序第五轮比较
图6-7 冒泡排序第六轮比较
【例6.5】10个整数冒泡排序。
每一轮比较交换的过程称为一次起泡。每完成一次起泡,已排好序的数就增加一个,待排序的数相应减少一个,从而使下一次起泡过程的比较计算也少一次。对N个数据来说,每一轮依次要进行的比较次数依次为(N-1)次,(N-2)次,…,2次,1次,其排序流程图如图6-8所示。
图6-8 N个数冒泡排序的流程图
结合案例导读和本节一维数组的知识,总结如下:
1.圈子决定人生,接近什么样的人,就会走什么样的路。牌友只会催你打牌,酒友只会催你干杯,而靠谱的人却会感染你如何取得进步。当你活成了一个自信的、自由的、喜欢你自己的、散发着阳光的人,同样也会吸引着同类的人。
2.“单个变量”是游兵散勇,聚在一起组成“数组”才有机会所向披靡。团结就是力量。
1.在C语言中,引用数组元素时,其数组下标的数据类型允许是( )。
A.整型常量 B.整型表达式
C.整型常量或整型表达式 D.任何类型的表达式
2.C语言中,数组名代表( )。
A.数组全部元素的值 B.数组首地址
C.数组第一个元素的值 D.数组元素的个数
3.int a[4]={5,3,8,9};其中a[3]的值为( )。
A.5 B.3 C.8 D.9
4.阅读下列程序:
上述程序运行后,输出结果是为( )。
A.2 B.1 C.0 D.3
5.在数组中,数组名表示( )。
A.数组第1个元素的首地址 B.数组第2个元素的首地址
C.数组所有元素的首地址 D.数组最后1个元素的首地址
6.若有以下数组说明,则数值最小的和最大的元素下标分别是( )。
int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};
A.1,12 B.0,11 C.1,11 D.0,12
7.有以下程序,其功能是对数组中的数据由小到大进行排序,最后输出排序后的数组内容。请在下画线处填上正确的内容,以实现程序功能。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。