打字猴:1.70041518e+09
1700415180
1700415181 虽然代码清单6.2中的程序可正常运行(代码清单6.2给出的只是代码片段,无法直接运行),但是处理的过程(算法)实在是够哆嗦的。如果需要排序的数据有1000个,那么就需要定义1000个变量,用于比较其中数值大小的if语句,更是需要约数十万个程序块。应该没有人想写这么麻烦的程序吧。也就是说,为了实现想要实现的算法,有时不能只依靠离散的变量。
1700415182
1700415183
1700415184
1700415185
1700415186 计算机是怎样跑起来的 [:1700412671]
1700415187 计算机是怎样跑起来的 6.2 要点2:了解作为数据结构基础的数组
1700415188
1700415189 在实际应用的程序中经常需要处理大量的数据,比如那种用于统计1000名职员的工资之类的程序。在这类程序中存储数据时使用的是“数组”,而不是定义1000个变量。通过使用数组,既可以同时定义出多个变量,又可以提高编写程序的效率。在上一节的例子中,分别定义了a,b,c三个变量,其实可以换一种定义变量的方法,那就是只定义一个含有3个元素(包含3个数据)的数组。在用C语言编写的程序中,是通过指定数组名和数组所包含的元素个数来定义数组以供使用的(如代码清单6.3所示)
1700415190
1700415191 代码清单6.3 使用含有3个元素的数组
1700415192
1700415193 char x[3];      /*定义数组*/
1700415194
1700415195 x[0]=123;       /*把数据存入数组的第0个元素中*/
1700415196
1700415197 x[1]=124;       /*把数据存入数组的第1个元素中*/
1700415198
1700415199 x[2]=125;       /*把数据存入数组的第2个元素中*/
1700415200
1700415201 数组实际上是为了存储多个数据而在内存上集中分配出的一块内存空间,并且为这块空间整体赋予了一个名字。在代码清单6.3中,通过定义数组,操作系统就分配出了一块用于存储3个数据所需的内存空间,并将这块空间整体命名为x。可以通过在[和]之间指定序号(索引)的方式分别访问数组内的各块内存空间
1700415202
1700415203 本例通过char x[3]这条语句就分配出了数组整体所需的内存空间,其中每个元素的内存空间可通过x[0],x[1],x[2]的方式进行访问。虽然本质上还是定义了三个变量,但比起离散的变量,使用数组可以高效地编写也能够实现排序等算法 的程序,具体的例子将在稍后展示
1700415204
1700415205 数组是数据结构的基础,之所以这么说是因为数组反映了内存的物理结构本身。在内存中存储数据的空间是连续分布的。而在程序中,往往要从内存整体中分配一块连续的空间以供使用。如果用程序中的语句表示这种分配使用方式的话,就要用到数组(如图6.2所示)
1700415206
1700415207 图6.2 数组反映了内存物理结构本身
1700415208
1700415209
1700415210
1700415211
1700415212
1700415213
1700415214
1700415215 计算机是怎样跑起来的 [:1700412672]
1700415216 计算机是怎样跑起来的 6.3 要点3:了解数组的应用–作为典型算法的数据结构
1700415217
1700415218 数组是数据结构的基础,只要使用数组就能通过程序实现各种各样的算法以处理大量的数据。代码清单6.4中列出的程序使用了第5章中所介绍的名为“线性搜索”的典型算法,用于从数组x中所存储的1000个数字中查找(search)777这个数字,在这段程序中没有使用“哨兵”
1700415219
1700415220 代码清单6.4 使用线性搜索算法查找数据
1700415221
1700415222 for (i=0; i<1000; i++){
1700415223
1700415224   if (x[i]==777){
1700415225
1700415226 printf(“找到777了!”);
1700415227
1700415228   }
1700415229
[ 上一页 ]  [ :1.70041518e+09 ]  [ 下一页 ]