数据结构对算法的影响
⑴ C语言与算法和数据结构的关系
① 不要认为单独学C很难真正编写出程序。
② 不要太认为你没学数据结构和算法难以解决实际编程问题。
③ C语言只要你熟练掌握,这就是你学Data structure and Algorithms 的基础。
④ 学好数构和算法的前提是:你C语言用得比较熟练了(特别是指针、复合变量、数组的编程运用)
⑤ 最后,你只要看一本关于数据结构和算法的书就够了《算法导论》(国外的那本),如果要深入搞懂它,最好看它之前看Knuth的一本《Concrete Mathematics》。算法导论算是算法与数据结构的圣经了,里面充分讲了算法和数据结构的大部分理论和实践。
⑥另外,算法和数据结构是有深刻关系的,但是你完全可以学算法的时候不用复杂数据结构就能解决大部分问题;或者不用复杂算法,单凭构造复杂数据结构解决复杂问题。
⑵ 数据结构与算法的关系
数据结构与算法的关系表现在以下几个方面:
首先,它们在指代上有所区别。算法指的是解决问题的准确且完整的步骤描述,是一系列解决问题的明确指令。而数据结构则指的是数据元素之间存在特定关系的虚拟集合。
其次,它们的目的不同。算法的描述的是一个计算过程,它能够从一个初始状态和可能的初始输入开始,通过一系列有限且清晰定义的状态转换,最终产生输出并停止于一个最终状态。数据结构则研究数据的逻辑结构和物理结构之间的相互关系,定义相应的运算,并设计出相应的算法,以确保经过这些运算后得到的新结构仍然保持原有的结构类型。
最后,它们的特点也有所不同。算法中的每个计算步骤都可以被分解为基本的可执行操作步骤,即每个步骤都可以在有限时间内完成。而数据结构的核心技术是分解与抽象。通过分解,可以将数据划分为三个层次;通过抽象,可以舍弃数据元素的具体内容,从而得到逻辑结构。
⑶ 算法和数据结构的关系
记得网上曾经有一个帖子,大概的列出了学习ACM来说需要的知识背景。如果不是牛人,或者天生受虐倾向,普通人看到了都会晕倒,多达100多个科目(全部需要数学背景)。楼主觉得你能学的过来吗?
但是,所有的算法,乃至数学在实际运用中都是要根据不同的数据来选择不同的方法,所以一般学习过算法和数据结构的人都会越发的认识到,数据才是程序的中心,只有找到了一个组织数据的最佳方式,算法的运用才会事半功倍。比如我印象最深刻的是在大二时做的一道题目:判断一个输入的数是否符合科学计算法。如e*103,-30.90*103就不是。 这样一道题,如果用普通的数组线性存储,然后逐一判断,效率的算法的复杂度都是不合格的。 有限状态机则清晰明了的解决了这个问题。即把所有可能的状态和状态的转换画成一个矩阵,然后每读取一个输入的字符就在这些状态中跳转,直到最后一个字符为止,判断最终状态是有效还是无效状态。
总而言之:数据结构是问题的核心,是算法的基础。
建议楼主先磨好数据结构这把剑,对算法也不用着急,毕竟很多的数据结构的书中都有一些基础算法的介绍的。