6.3 要点3:了解数组的应用 – 作为典型算法的数据结构
数组是数据结构的基础,只要使用数组就能通过程序实现各种各样的算法以处理大量的数据。代码清单6.4中列出的程序使用了第5章中所介绍的名为“线性搜索”的典型算法,用于从数组x中所存储的1000个数字中查找(search)777这个数字,在这段程序中没有使用“哨兵”
代码清单6.4 使用线性搜索算法查找数据
for (i=0; i<1000; i++){
if (x[i]==777){
printf(“找到777了!”);
}
}
在C语言中,for语句具备反复执行某种处理的功能,因此为了从头到尾连续地处理数组中的元素,往往需要使用for语句。这段程序中除了数组x还定义了一个变量i,在for这个关键词后面的小括号中,要写上使变量i从0到999每循环一次就增加1的代码。于是就得到了这么一个代码片段
for (i=0;i<1000;i++){
在C语言中是通过用{和}将若干条语句括起来,表示程序中的程序块(具有一定意义的语句集合)的。通过这种方式写在for语句程序块当中的if语句就会随着变量i的值的增加而被反复执行1000次,在这里if语句的作用是判断是否已经找到了777
通常把像变量i这样的用于记录循环次数的变量称为循环计数器(Loop Counter)。数组之所以方便,就是因为可以把循环计数器的值与数组的索引对应起来使用(如图6.3所示)
图6.3 把循环计数器的值和数组的索引对应起来
接下来就试着用“冒泡排序”这种典型算法将存储在数组中的1000个数字按降序排列。程序如代码清单6.5所示。在冒泡排序算法中,需要从头到尾地比较数组中每对相邻元素的数值,然后反复交换较大的数值和较小的数值的位置
代码清单6.5 通过冒泡排序算法排列数据
for (i=999; i>0; i--){
for(j=0; j<i; j++){
if (x[i]>x[j]){
tmp=x[i];
x[i]=x[j];
x[j]=tmp;
}
}
}
在这里没有必要去深究这个程序的流程,这之后展示的代码也是如此。只要粗略浏览一下抓住其大意就好。这里只希望能关注一点,即通过使用数组和for语句,就能编写出实现线性搜索和冒泡排序算法的程序
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论