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