数组 点第6章.pptVIP

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数组 点第6章

* * * * * 这是一个典型算法,需要读者掌握。 * 定义二维数组时“行数”、“列数”必须分别放在独立的方括号中 * 计算机内存地址是线性编址的,程序中的一维数组的元素是线性排列的,与内存的线性特征是吻合的。但与矩阵对应的二维数组是平面结构的,一个元素可有上下左右4个相邻元素,与内存的线性特征不一致,因而需要进行转化 可以把二维数组看作是用一维数组定义的一维数组,即该一维数组的每个元素又是一个一维数组 * * 定义二维数组时,如果根据初始值的情况可以确定数组的行数,则可以省略数组定义中的行数声明,但不可以省略列数说明,因为C编译器无法确定数组的列数到底是多少,也就无法为数组分配内存。 注:多维数组初始化时只可以省略第1维的长度。 * 习惯上,一维数组打印在一行内,而二维数组打印成二维的矩阵形式。 * 二维数组的输入、输出记其他处理通常需要使用嵌套的循环结构 * max变量并不是必需的,可以直接用a[x][y]代替 * * 程序中调用time函数获取系统时间并转化为一个整数,用作seed函数的参数——随机数序列的种子,以获取不同的随机数 * 查找(也叫搜索)是计算机数据处理的常用算法之一,也是日常生活最常见的问题。如果待查序列中数据的个数不是非常多,简单的顺序查找算法就可以解决问题。当数据个数非常大时,如何提高查找效率就成了算法的关键。 查找的结果只能是找到还是没找到,如果找到了,则该查找是成功的,否则就是失败的查找。对于成功的查找,只要找到一个就可以了,不必比较所有的数据。但对于失败的查找,需要确认每个数据都不是要找的,但是否需要比较所有数据呢?顺序查找方法需要,而折半法查找不需要,这也是折半法查找效率高的关键所在。 * * 与查找一样,排序也是最基本的算法之一,但由于算法的复杂性更高,效率问题更为突出。对于少量数据的排序,可以采用起泡法、选择法、插入法等简单排序方法,而对于大规模数据的排序,则需要更高速的排序方法,如快速排序、希尔排序等。 * * * 二维数组的数组元素的格式为: 数组名称[行下标][列下标] 对于有m行n列的二维数组a,其行下标的取值范围是0~m-1,列下标的取值范围是0~n-1 a[0][0] 是数组的第一个元素,a[m-1][n-1] 是最后一个元素 C语言中,二维数组是按行存储的 数组a 数组a 数组a的内存格式 2、多维数组 可以将用一维数组定义二维数组的方法延伸到多维数组的定义 三维数组的定义格式为: 类型说明 数组名称[行数][列数][层数] 与二维数组类似,可以把三维数组看作是由二维数组组成的一维数组,即该一维数组的元素是一个二维数组 在内存中,三维数组中的各元素的存放顺序是先按行存储,再按列存储,最后分层 也可以这样理解,C语言中多维数组的元素在内存中的存储顺序是:最右边的下标变化最快 二、多维数组的初始化 1、按元素存储顺序赋初值 int a[2][3]={1, 2, 3, 4, 5, 6}; int a[2][3]={1, 2, 3}; 2、按行赋初值 int a[2][3]={{1, 2, 3}, {4, 5, 6}}; int a[2][3]={{1}, {4, 5}}; int a[2][3][4]={{{1}, {2, 3}, {4, 5, 6}}, {{7, 8, 9, 10}}}; 3、省略了的行数说明 int a[][4]={{1, 2, 3, 4}, {5, 6, 7, 8}}; int b[][3]={1, 2, 3, 4, 5, 6, 7, 8, 9}; int c[][3]={{1, 2}, {3}}; 用1~12初始化将数组a[3][4],然后用从键盘输入的任意两个数替换12个数的中间两个,输出替换前后的二维数组 对于二维数组a[3][4],中间两个元素是a[1][1]和a[1][2] #include stdio.h void main() { int i, j, x, y; int a[3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; printf( 替换前的数组是: \n ); for( i=0; i3; i++) { for( j=0; j4; j++) printf(%5d, a[i][j] ); printf(\n); } printf( 请输入2个整数: ); scanf( %d%d, x, y ); a[1][1] = x; a[1][2] = y; printf( 替换后的数组是:\n ); for( i=0; i3; i++) { for( j=0; j4; j++) printf(%5d, a[i][j] );

您可能关注的文档

文档评论(0)

189****6649 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档