查找及排序算法
这两个知识只能算是数据结构及算法分析的基础.算是非常简单了,在C语言中只用几行或十几行代码来实现.

对于排序算法有很多种,其中很简单的一种是冒泡排序算法,它的实现原理是比较相邻的两个数值,然后将较大的数放在数组右边,这样第一次比较结果就可以得到最大数.然后依此方法一直比较下去,每次比较的次数比前一次少一次,最后只用比较第一和第二个数值,把较大的放在第二个数中.这样比较的结果就是从小到大的顺序排列.
而对于查找算法,最简单的一种是依次比较数组中的每一个元素,不过另一种相当有效率的方法是二分查找算法,也称为二进制查找算法.不过这种算法有一个非常重要的前提是要查找的数据必须是已经排好序的.不要小看实现该算法的C语言代码才有几行,在汇编语言中实现这个算法需要四五十行.
此时我终于体会到了多模块设计方法中的错误处理了,就是短短的两三百行代码,如果写成多模块的话排起错来真是非常复杂,昨晚上就预到这一情况:题目是用随机数填充一个有10元素的数组,然后将它进行排序,要求输入一个数值,并且用二分法对数组进行查找.我把这些问题分解成几个小问题并且用相应的函数来实现,并且把一个函数保存在一个文件中,那么这个程序的源码就有六个文件.分别编译没有问题,链接没有问题,但是运行时总是出现内存读写错误,后来修改了一下调用这些函数的参数,问题解决,但是却出现死循环???不会吧...因为排序以及查找算法我在之前就调试过,所以就没有再分析这两个文件的源码,重点分析其它五个文件,原来错误在用随机数填充数组中的这个循环中.修改好后再进行编译,链接,这次终于可运行了.
综上所述,就是几行代码的文件,编译链接可能没有问题,但是运行时出现的错误是很难排除的,只能多多调试这种类型的代码多多总结经验.从上面可以看出,最好排错的算是编译出错的语法错误了,因为编译器至少会给你是哪行出错了,但是链接时出现的错误就比较难排除,因为不能很好的定位是哪个文件中的源码有问题,而运行时错误就更是如此,有些时候一时还不知从何下手.
本文来源 我爱IT技术网 http://www.52ij.com/jishu/1711.html 转载请保留链接。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
