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
1700415230
}
1700415231
1700415232
在C语言中,for语句具备反复执行某种处理的功能,因此为了从头到尾连续地处理数组中的元素,往往需要使用for语句。这段程序中除了数组x还定义了一个变量i,在for这个关键词后面的小括号中,要写上使变量i从0到999每循环一次就增加1的代码。于是就得到了这么一个代码片段
1700415233
1700415234
for (i=0;i<1000;i++){
1700415235
1700415236
在C语言中是通过用{和}将若干条语句括起来,表示程序中的程序块(具有一定意义的语句集合)的。通过这种方式写在for语句程序块当中的if语句就会随着变量i的值的增加而被反复执行1000次,在这里if语句的作用是判断是否已经找到了777
1700415237
1700415238
通常把像变量i这样的用于记录循环次数的变量称为循环计数器(Loop Counter)。数组之所以方便,就是因为可以把循环计数器的值与数组的索引对应起来使用(如图6.3所示)
1700415239
1700415240
图6.3 把循环计数器的值和数组的索引对应起来
1700415241
1700415242
1700415243
1700415244
1700415245
接下来就试着用“冒泡排序”这种典型算法将存储在数组中的1000个数字按降序排列。程序如代码清单6.5所示。在冒泡排序算法中,需要从头到尾地比较数组中每对相邻元素的数值,然后反复交换较大的数值和较小的数值的位置
1700415246
1700415247
代码清单6.5 通过冒泡排序算法排列数据
1700415248
1700415249
for (i=999; i>0; i—){
1700415250
1700415251
for(j=0; j
1700415252
1700415253
if (x[i]>x[j]){
1700415254
1700415255
tmp=x[i];
1700415256
1700415257
x[i]=x[j];
1700415258
1700415259
x[j]=tmp;
1700415260
1700415261
}
1700415262
1700415263
}
1700415264
[
上一页 ]
[ :1.700415215e+09 ]
[
下一页 ]