向函数传递数组程序示例

上传人:ldj****22 文档编号:50599770 上传时间:2018-08-09 格式:PPT 页数:31 大小:1.60MB
返回 下载 相关 举报
向函数传递数组程序示例_第1页
第1页 / 共31页
向函数传递数组程序示例_第2页
第2页 / 共31页
向函数传递数组程序示例_第3页
第3页 / 共31页
向函数传递数组程序示例_第4页
第4页 / 共31页
向函数传递数组程序示例_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《向函数传递数组程序示例》由会员分享,可在线阅读,更多相关《向函数传递数组程序示例(31页珍藏版)》请在金锄头文库上搜索。

1、*1/498.3 8.3 向函数传递数组向函数传递数组 向函数传递数组向函数传递数组, ,即数组作为函数的参数。即数组作为函数的参数。数组作为函数参数主要有两种情况数组作为函数参数主要有两种情况: :2. 2. 数组名数组名作函数的作函数的实参实参:这种情况要求这种情况要求函数的形参函数的形参是是相同类型的数组或指针相同类型的数组或指针 ,这种方式是把实参数组的起始地址传给形参数组,形,这种方式是把实参数组的起始地址传给形参数组,形 参数组的改变就是对实参数组的改变,称这种参数传递参数组的改变就是对实参数组的改变,称这种参数传递 方式为方式为“地址传递地址传递”。1. 1. 数组元素数组元素作

2、为函数的作为函数的实参实参: : 与普通变量作为函数的实参一样,只是将数组元素与普通变量作为函数的实参一样,只是将数组元素 的值传给形参。形参的变化不会影响实参数组元素的值的值传给形参。形参的变化不会影响实参数组元素的值 ,我们称这种参数传递方式为,我们称这种参数传递方式为“值传递值传递”。*2/498.3 8.3 向函数传递数组向函数传递数组 将数组的将数组的首地址首地址作为参数传过去作为参数传过去 由于首地址相同,故实参数组与由于首地址相同,故实参数组与 形参数组形参数组占用同一段内存占用同一段内存 实际上将实际上将整个数组整个数组传递传递给函数了给函数了 在该函数内,不仅可以在该函数内,

3、不仅可以读读这个数这个数 组的元素,还可以组的元素,还可以修改修改它们。它们。数组名数组名作为函数的作为函数的实参实参( (地址传递)地址传递)*3/49【例例】将两个整型数组所对应的元素逐个相比较将两个整型数组所对应的元素逐个相比较( (即即 a0a0与与b0b0比较,比较,a1a1与与b1b1比较比较), ), 统计两个数组中统计两个数组中 相应元素的关系分别是大于、等于、小于的数目。相应元素的关系分别是大于、等于、小于的数目。8.3 8.3 向函数传递数组向函数传递数组*4/49int compare(int a,int b) if(ab) return 1;if(a=b) return

4、 0;if(ab: %dn”,large);printf(“a=b: %dn”,equal);printf(“ab:2ab:2 a=b:2a=b:2 ab: %dn”,large);printf(“a=b: %dn”,equal);printf(“ab:2ab:2 a=b:2a=b:2 a scorei)/*从高到低*/ temp = scorej;scorej = scorei; scorei = temp; *17/49冒泡法排序冒泡法排序0 0 1 1 2 2 3 3 4 40 0 1 1 2 2 3 3 4 4*18/49冒泡法排序冒泡法排序0 0 1 1 2 2 3 3 4 40 0

5、 1 1 2 2 3 3 4 4*19/49【例例8.98.9】冒泡法从高到低排序冒泡法从高到低排序冒泡法冒泡法排序排序 forfor (i=0; i scorescorej j)“ “交换成绩交换成绩scorejscorej 和和scorej+1“scorej+1“ *20/49【例例8.98.9】冒泡法从高到低排序冒泡法从高到低排序 void DataBubble(int score,int n) /*冒泡法*/ int i, j, temp; for (i=0; i scorej)/*从高到低*/ temp = scorej+1;scorej+1 = scorej; scorej = t

6、emp; *21/49选择法排序选择法排序k=1k=2k=0k=10 0 1 1 2 2 3 3 4 40 0 1 1 2 2 3 3 4 4*22/49选择法排序选择法排序 k=2k=4k=3k=40 0 1 1 2 2 3 3 4 40 0 1 1 2 2 3 3 4 4*23/49选择法选择法排序排序 forfor (i=0; i scorescorek k)k = j k = j; /*; /*记录此轮比较中最高分的元素下标记录此轮比较中最高分的元素下标* */ / if(kif(k!=i)!=i) /* /*若若k k中记录的最大数不在位置中记录的最大数不在位置i i,则,则* */

7、 / 交换交换成绩成绩scorescorek k 和和scorescorei i; ; 【例例8.108.10】选择法从高到低排序选择法从高到低排序*24/49void DataSort(int score, int n) /*选择法*/int i, j, k,temp;for (i=0; i scorek) k = j; /*记录最大数下标位置*/if (k != i) /*若最大数不在下标位置i*/ temp = scorek; scorek = scorei; scorei = temp; 【例例8.108.10】选择法从高到低排序选择法从高到低排序*25/49折半查找的基本算法思想:折

8、半查找的基本算法思想:选定一组数中居中间位置的数与所要找的数比较,选定一组数中居中间位置的数与所要找的数比较,若相等,查找成功;若相等,查找成功;若不相等,利用数据的有序性,将查找范围缩小一半;若不相等,利用数据的有序性,将查找范围缩小一半;以上述同样的方法,在缩小的查找范围内再次进行折半以上述同样的方法,在缩小的查找范围内再次进行折半 查找;如此每次比较都会将查找范围缩小一半,从而更快地查找;如此每次比较都会将查找范围缩小一半,从而更快地 找到目的数。找到目的数。有序表的折半查找有序表的折半查找【例例】假设数组假设数组a a中的数据是按由小到大有序排列的:中的数据是按由小到大有序排列的:-1

9、2 0 6 16 23 56 80 100 115-12 0 6 16 23 56 80 100 115查找查找6 6存不存在?存不存在?*26/49intint BinSearch( BinSearch(longlong numnum, , longlong x, x, intint n) n) intint low, high, mid; low, high, mid; low = 0; low = 0; high = n - 1; high = n - 1; whilewhile (low nummid) (x nummid) low = mid + 1; low = mid + 1; elseelse ifif (x =i;ji;j-)-)aj+1= aj+1=ajaj; ; aiai=e;=e;n+; n+;7 79 91 1数组元素的删除与插入操作数组元素的删除与插入操作*31/49 Questions and answersQuestions and answers

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号