无论是什么语言,归根结底它还是电平的变化,虽然做软件不需要深入了解到那么深入,但是我们需要了解程序的本质。
程序是什么,程序=数据结构+算法;什么叫算法,算法简单说就是计算机的操作;什么叫数据结构,数据结构就是计算机操作对象。
我是一个高要求的人,所以如果同样希望做出更好的程序,不满足于现在的语言的同学们可以和我一起讨论。本系列文章将从最基本的数据结构讨论起,直到常用的算法为止。最基本会包括六度空间算法,红黑树等等。
闲话不多说。我们进入正题。
这一个部分我想总结一下关于算法设计的基本目标和算法分析。
算法的基本目标
是什么?各个地方的说法总结各种什么性什么性的我不喜欢。
第一、算法就是用来解决问题的。所以它最基本的就是要能够解决问题。
第二、算法就是用来提高效率的。所以它要能够在更小的内存上、用更快的速度去解决问题。至于如何平衡空间和时间这是根据实际情况考虑的问题。
第三、算法能够提高运行的能力。简单说两个算法,一个出错了能跑回来,一个出错就当机,当然我们想要选择这个能跑回来的。
至于书本上说的可读性等等,都是相对的,如果连基础的数学运算都没法理解,如何理解一个高等工程函数?如果能理解高等工程函数,还有基础函数不理解的么?
然后就是关于算法分析
了。仅仅从程序上看算法的效率是由他的运行时间决定的。比如说循环次数,分支等等。但是这里在实际中存在另一种可能性,就是使用率
。我认为,使用率去决定算法的最终实现,在实际中的效果会比其他的分析方法更加的高效。所以我们要在成为一个好的程序员的同时成为某一个领域(比如金融、比如医药)方面的能手。
当然基本的分析方法还是要谈谈:
1.时间分析(效率分析):分析基本运算次数的数量级。
2.空间分析:考虑最坏的情况。
在现在商务中,由于存储的价格降低,我们可以认为空间是无限大的,然后去设计算法。而且我们还有云计算。
综上所述,我们设计一个算法,一个程序,基本需要考虑的问题:
1.团队的知识能力。也就是说能看懂哪个层次的算法。
2.程序面向的主要使用者的使用方式。
3.软硬件资源。到底是空间更多,还是计算能力更快,合理利用这些资源。
分享到:
相关推荐
Redis开发-redis数据结构基础知识及案列(每个数据结构一个案例) redis数据结构基础知识及案列(每个数据结构一个案列) 案例清单 String案例:使用String字符串保存用户对象 List 案例:使用list保存爬虫待爬取...
《数据结构C语言严蔚敏第一版》是计算机科学领域内一部权威且广泛使用的教材,由严蔚敏、吴伟民编著,清华大学出版社出版。该书不仅适用于计算机科学专业的本科生和专科生,也适合其他理工科专业作为选修课程使用,...
在四川大学的数据结构课程中,实验一通常会涉及基础的数据结构概念和C语言编程实践。数据结构是计算机科学中的核心课程,它研究如何有效地存储、组织和管理数据,以便进行高效的检索、插入和删除等操作。这个实验...
数据结构是计算机科学与技术专业的核心课程之一,主要研究如何存储、组织数据以便于使用或处理。本资料的内容覆盖了数据结构的多个重要方面,包括但不限于数组、链表、栈、队列、树、图、查找和排序等。 从内容中,...
一、数据结构的一般概念 重点详细内容知识点总结: 数据:所有能被输入到计算机并被处理的符号的集合。 数据元素:数据的基本单位。 数据项:构成数据的不可分割的最小单位,一个数据元素由若干个数据项组成。...
1. **数组**:数组是最基础的数据结构,它将一组相同类型的元素存储在一个连续的内存空间中。通过索引可以快速访问任意位置的元素,但插入和删除操作相对较慢,因为可能需要移动大量元素。 2. **链表**:链表是一种...
很好的考试复习资料,内容很多,讲解很细致,而且涉及的也是重点
本实验报告集合涵盖了数据结构实验的一、二、三个部分,旨在帮助北京信息科技大学计算机科学专业的学生深入理解和掌握数据结构的基本概念和实现方法。 实验一通常涉及线性数据结构,如数组、链表和栈。数组是一种...
数据结构是计算机科学中的核心课程之一,主要研究如何在计算机中高效地组织和存储数据,以便于进行各种操作。上海交通大学的数据结构课件是学习这一主题的重要资源,它涵盖了广泛的知识点,帮助学生深入理解数据结构...
李春葆教授的数据结构教程是一本广泛使用的教材,它深入浅出地介绍了这一领域的基本概念和算法。在这个教程中,读者将接触到各种类型的数据结构,如数组、链表、栈、队列、树、图以及散列表等,这些数据结构在实际...
总的来说,《谭浩强《数据结构》课件》是一份全面且深入的数据结构学习资源,无论是对于初学者还是有一定经验的程序员,都能从中受益匪浅。通过系统的阅读和实践,读者可以掌握数据结构这一关键领域的知识,提升自己...
- **栈**和**队列**:栈是一种后进先出(LIFO)的数据结构,而队列是先进先出(FIFO)的。它们在程序设计中广泛应用,如递归、函数调用和任务调度。 - **哈希表**:通过散列函数快速查找数据,提供常数时间的查找...
栈是一种后进先出(LIFO)的数据结构,常用于表达式求值、递归等场景;队列则是先进先出(FIFO)的数据结构,常用于任务调度和消息传递。 接下来,我们会深入学习树形结构,包括二叉树、平衡树和堆。二叉树是最简单...
数据结构是计算机科学中的核心课程之一,主要研究如何在计算机中高效地组织和存储数据,以便于进行各种操作。唐发根教授的数据结构教程是一部深受初学者欢迎的教材,它全面且深入地介绍了数据结构的基本概念、算法和...
这份“数据结构的pdf课件”是学习这一主题的重要资源,尤其对于初学者来说,它能提供系统性的指导和深入的理解。 课件可能涵盖以下关键知识点: 1. **基本概念**:首先会介绍数据结构的基本概念,包括什么是数据...
2. 链表(Linked List):是一种动态分配存储空间的数据结构,每个节点包含数据和指向下一个节点的指针。 3. 栈(Stack):是一种后进先出的数据结构,元素的添加和删除操作都在栈顶进行。 4. 队列(Queue):是一种...
数据结构是计算机科学中的核心课程之一,主要研究如何在计算机中高效地组织和管理数据,以便进行有效的存储、检索和处理。本压缩包文件“数据结构自考历年试题”显然是针对自学考试的数据结构课程,提供了历年的考试...
线性表是指数据元素之间存在一种一对一的关系的数据结构。 线性表的存储结构包括顺序存储结构和链式存储结构两种。 线性表的逻辑顺序与存储顺序总是一致的。 链式存储结构要求内存中可用存储单元的地址可以是...
本资源摘要信息涵盖了数据结构的基本概念、数据元素、数据结构的分类、算法的基本特性、数据存储结构、算法分析、时间复杂度和数据抽象等内容,为学习和研究数据结构提供了一个系统和全面的概述。