什么是算法,什么是数据结构
尽管已经学了几年,对它们也可以说大致懂得。但是,作为非计算机专业的人员,还是不会比计算机专业人员懂得多。既然没有受过专门的学习训练,自然会有三天打鱼两天晒网的感觉,一天可能冒出一个念头。于是乎,写写现在的念头,一点也没有直接抄袭其他地方的资料,还是用自家的话说比较让自己懂!可能有错,但是不要怕,先错着,以后理解透了自然会在意识上修正。
因为上次选修过算法与数据结构,受到课名的影响,虽然教材是《数据结构教程》,但总是以为自己学的是算法。实际上,自己在学习数据结构。
〇、引言
用一个比喻描述。图书馆里的书好比数据,图书的摆放好比数据结构。要更好地管理图书就必须更好地摆放图书!比如,我可能这么摆放:
方案1:
所有的书架上放在一个大房间中,依次摆放:古典文学,西方文学,中国文学,历年诺贝尔文学,天文学,地理学,中国历史,外国历史,信息,自动化,通信,电子电气...依次列举,这里还假设各个书架上的书不会有相同的,它们是并列关系,虽然有些牵强。(数组)
如果我要找一本《围城》,那么我先到第一个书架上看看有没有这本书,发现没有又到下一个书架看,直到找到这本书。(搜索,线性搜索)
方案2:
我先将大房子分成两个房间,分别称为社会科学图书,自然科学图书。然后两个房间又各自分为:历史、地理、政治;理科,工科。依次按照类别分。(树,各种树)
如果我要找本《数据结构教程》,我先悠哉悠哉地走进自然科学图书房间,然后轻轻地抬头,看看房间牌子,进入工科房间。。。依次,很快找到这本书。(树的搜索logn时间复杂度)
这就是数据结构的神奇。
那什么是算法?这个只能牵强地接着比喻。我想学武功。我进入武功秘籍的图书房间之后,我抱着一大堆书跑出来。打开一看,有降龙十八掌,九阴真经,九阳神功,易筋经,乾坤大挪移,少林龙爪手,太极拳,醉拳,佛山无影脚,七伤拳。我暂时没想好学什么武功,因为各有厉害的地方,有学的时间长不伤身,有的速成但伤身,有的需要内力,有的速度快杀伤力弱,有的杀伤力强但速度极慢。有的虽然不是最厉害的,但简单易学。
同样地,算法也有好坏之分:有的不能保证收敛,有的能收敛速度慢。有的虽然速度快,但需要内存大。有的虽然不是局部最优解,但是简单容易,有的是原址的,有的不是原址的。
一、数据结构
类别
栈:
队列:
链表:单链表、双链表
各种树:AVL树、2-3树、B树、红黑树、AA树、treap树、带权平衡树、k近邻树、伸展树、跳表...各种各样的树,很有意思
散列表:链接法、开放寻址法
主要研究下述的操作,希望更少的时间复杂度来操作:
建立
查询
插入
删除
二、算法
举例
最优化理论中各种:
动态规划:
整数规划:
各种非凸算法:遗传算法,蚁群算法,粒子群算法,模拟退火算法
...
研究目标:
希望算法收敛且速度快,全局最优,代码简单易懂,内存更好,原址,鲁棒性好
转载于:https://www.cnblogs.com/Wanggcong/p/4725134.html
什么是算法,什么是数据结构相关推荐
- Interview:算法岗位面试—10.29下午上海某电子(偏传统ML算法,外企)数据结构算法+晚上国内某保险公司(偏AI算法,世界500强)技术面试之分类算法、回归算法、聚类算法等细节考察
ML岗位面试:10.29下午上海某电子(偏传统ML算法,外企)数据结构算法+晚上国内某保险公司(偏AI算法,世界500强)技术面试之分类算法.回归算法.聚类算法等细节考察 Interview:算法岗位 ...
- vrp 节约算法 c++_数据结构和算法(Golang实现)(8.1)基础知识-前言
基础知识 学习数据结构和算法.我们要知道一些基础的知识. 一.什么是算法 算法(英文algorithm)这个词在中文里面博大精深,表示算账的方法,也可以表示运筹帷幄的计谋等.在计算机科技里,它表示什么 ...
- 算法设计和数据结构学习_2(常见排序算法思想)
一般约定我们是按照从小到大的顺序排序. 按照向量的形式来参考排序中数组元素的相对位置,行向量中最左边为数组的第一个元素,且称为前面.列向量中最上面的元素为数组的第一个元素,也是称为前边. 对常见的排序 ...
- 【自学笔记】尚硅谷数据结构与算法Chapter 1 数据结构与算法概述
Chapter 1 数据结构与算法概述 文章目录 Chapter 1 数据结构与算法概述 1.1.1 数据结构和算法的关系 1.2.1 线性结构 1.2.2 非线性结构 尚硅谷数据结构B站学习视频地址 ...
- python常用代码_Python常用算法学习(4) 数据结构(原理+代码)-最全总结
数据结构简介 1,数据结构 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成.简单来说,数据结构就是设计数据以何种方式组织并存贮在计算机中.比如:列表,集合与字 ...
- 算法——常用的数据结构/模板/基础知识
常用的数据结构/模板/基础知识 (一)c++--优先队列(priority_queue) 最大堆和最小堆的写法 (二)c++中的全排列函数next_permutation() (三)迭代器的使用 (四 ...
- python数据结构算法优势_Python数据结构与算法(一)----- 算法效率
一.引入 先来看一道题: 如果a+b+c=1000, 且a2+b2=c^2(a,b,c为自然数),如何求出所有a,b,c可能的组合? (1) 枚举法 import time start_time = ...
- 重学算法第三期|数据结构与算法001
目录 强烈推荐一个数据结构可视化工具:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html,点击B+树即可模拟B+树的动态插入过 ...
- 与机器学习算法有关的数据结构
摘要: 在机器学习中需要运用到许多数据结构,掌握它们是非常重要的.希望本文能有所帮助 拥有机器学习技能是不够的.你还需要良好的数据结构的工作知识.学习更多,并解决一些问题. 因此,你已经决定不再使用固 ...
- java算法概述,Java数据结构与算法基础(一)概述与线性结构
Java数据结构与算法基础(二)递归算法 Java数据结构与算法基础(一)概述与线性结构 学习目的:为了能更顺畅的读很多底层API代码和拓宽解决问题的思路 一.数据结构概述 1.数据结构是什么?数据与 ...
最新文章
- jieba之segment
- Vue报错:Error while running task D:\vue\forum:build with message‘spawn vue-cli-service ENOENT‘
- python 数据库查询序列化_python-将sqlalchemy类序列化为json
- 使用Exceptionless记录日志
- 第1章 Python 数字图像处理(DIP) --绪论
- caffe SigmoidCrossEntropyLossLayer
- django 视图-----视图函数
- python实现给定列表和数值,找到列表中的两个或者多个元素和为该数值的元素下标
- web 前端小记_1 :hasLayout
- 词法分析(三):有限自动机DFA与NFA
- R语言中的rgl包的安装问题
- 免费ftp服务器软件,实用的3款免费ftp服务器软件
- 如何让老用户帮你“裂变”新用户
- 数据库架构(一) 插入数据库
- 《魔兽世界》中的小背景
- JS And Vue代码调试——IDEA+JS+vue-devtools-dev+JetBrains IDE Support(Chrome插件)
- ChatGPT团队揭秘:3清华、1北大、1华科
- PTA最短工期 详细解释 为什么最短反而是最长?
- 阿里云服务器的windows和linux系统怎么选
- 通过键盘输入每年每月每日,计算并输出这一天是这一年的第几天,例如2001年3月5日是这一年的第64天。
热门文章
- 【nyoj - 890】 分东西 (水题 二进制)
- deepin部署python开发环境_deepin系统下部署Python3.5的开发及运行环境
- 学习笔记15-C语言-预处理指令、条件编译、头文件
- Android开发(2) | 广播 Broadcast 的应用——强制下线功能
- MySQL 存储引擎 | MyISAM 与 InnoDB
- leetcode914. 卡牌分组
- leetcode147 对链表进行插入排序
- 橙白oj18训练作业2-题解、代码
- ccpc河北大学生程序设计竞赛dp小总结
- 为什么我们仍然坚持用C++做游戏服务器