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