返回介绍

6.3 要点3:了解数组的应用 – 作为典型算法的数据结构

发布于 2023-05-19 17:35:11 字数 1300 浏览 0 评论 0 收藏 0

数组是数据结构的基础,只要使用数组就能通过程序实现各种各样的算法以处理大量的数据。代码清单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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文