- 开 本
- 16开
- 出版社
- 国防工业出版社
- ISBN
- 9787118058529
- 作 者
- 张永、李睿、年福忠
- 定 价
- ¥30.00
- 类 别
- 图书 >> 计算机/网络 >> 数据库 >> 数据库理论
- 装 帧
- 平装
- 页 数
- 296
- 字 数
- 438000
- 印次
- 1
- 丛书名
- 普能高等院校“十一五”规划教材
- 书 名
- 算法与数据结构
- 出版时间
- 2008-8-1
-
算法与数据结构
2017-11-20 19:40:47算法是计算机处理信息的本质,因为计算机程序本质上是一个算法来告诉计算机确切的步骤来执行一个指定的任务,一般,当算法在处理信息时,会从输入设备或数据的存储地址读取数据,把结果写入输出设备或某个存储地址供...算法的概念
算法是计算机处理信息的本质,因为计算机程序本质上是一个算法来告诉计算机确切的步骤来执行一个指定的任务,一般,当算法在处理信息时,会从输入设备或数据的存储地址读取数据,把结果写入输出设备或某个存储地址供以后再调用。
算法重要的是其的思想,而不是其所实现的某种语言,它是独立存在的一种解决问题的方法和思想。
算法的特性
输入:算法具有0个或多个输入
输出:算法至少有1个或多个输出
有穷性:算法在有限的步骤之后会自动结束,而不会无限循环,并且每一个步骤可以在可接受的时间内完成
确定性:算法中的每一步都有确定的含义,不会出现二义性
可行性:算法的每一步都是可行的,也就是说每一步都能够执行有限的次数完成
算法的效率
执行时间反应算法效率,实现算法程序的执行时间可以反应出算法的效率,也就是算法的优劣
但是单纯的依靠运行时间来比较算法的优劣并不一定是客观准确的,程序的运行,还依靠了运行环境等客观条件,所以并不能单纯的从运行时间来分别算法的好坏。
时间复杂度
假定计算机执行算法每一个基本操作的时间是一个固定的时间单位,那么有多少个基本操作就代表会花费多少时间单位,即使对于不同的程序运行环境来说,确切的程序运行时间是不同的,但是对于算法运行所花费的时间单位的数量级是相同的,所以可以忽略机器环境的影响而客观的反应算法的时间效率。我们采用“大O记法来表示”
大O记法
“大O记法”:对于单调的整数函数f,如果存在一个整数函数g和实常数c>0,使得对于充分大的n总有f(n)<=c*g(n),就说函数g是f的一个渐近函数(忽略常数),记为f(n)=O(g(n))。也就是说,在趋向无穷的极限意义下,函数f的增长速度受到函数g的约束,亦即函数f与函数g的特征相似。
时间复杂度:假设存在函数g,使得算法A处理规模为n的问题示例所用时间为T(n)=O(g(n)),则称O(g(n))为算法A的渐近时间复杂度,简称时间复杂度,记为T(n).
算法完成工作最少需要多少时间单位,就是最优时间复杂度
算法完成工作最多需要所少时间单位,就是最坏时间复杂度
算法完成工作平均需要多少基本操作,就是平均时间复杂度
时间复杂度的基本计算规则
基本操作,即只有常数项,认为其时间复杂度为O(1)
顺序结构,时间复杂度按加法进行计算
循环结构,时间复杂度按乘法进行计算
分支结构,时间复杂度取最大值
判断一个算法的效率时,往往只要关注操作数量的最高次项,其它次要项和常数项可以忽略
在没有特殊说明时,我们往往分析的算法时间复杂度是指最坏时间复杂度
常见时间复杂度
常见时间复杂度之间的关系
O(1) < O(logn) < O(n) < O(nlogn) < O(n2) < O(n3) < O(2n) < O(n!) < O(nn)
数据结构
为了解决问题,将数据保存下来,然后根据数据的存储方式来设计算法实现进行处理,那么数据的存储方式不同就会导致需要不同的算法进行处理,我们希望算法解决问题的效率越快越好,所以就需要思考如何保存数据,这就是数据结构。换句话说,数据结构指数据对象中数据元素之间的关系。高效的程序需要在数据结构的基础上设计和选择算法。也可以说程序是数据结构和算法之和。
抽象数据类型(Abstract Data Type)
ADT的含义是指一个数据模型以及定义在此模型上的一组操作。即把数据类型和数据类型上的运算联合在一起,进行封装。引入抽象数据类型的目的是把数据类型的表示和数据类型上的运算实现与这些数据类型和运算在程序中的引用隔开,使其相互独立。
最常用的数据运算类型有:插入、删除、修改、查找、排序
-
Caché 算法与数据结构
2020-07-01 11:43:50Caché 算法与数据结构 第一章 Caché 算法与数据结构 基础和概念 第二章 Caché 算法与数据结构 数组原理 第三章 Caché 算法与数据结构 链表原理 第四章 Caché 算法与数据结构 栈原理 第五章 Caché 算法与数据...Caché 算法与数据结构 第一章 Caché 算法与数据结构 基础和概念 ☆☆☆☆☆
第二章 Caché 算法与数据结构 数组原理 ☆☆☆☆☆
第三章 Caché 算法与数据结构 链表原理 ☆☆☆☆☆
第四章 Caché 算法与数据结构 栈原理 ☆☆☆☆☆
第五章 Caché 算法与数据结构 队列原理 ☆☆☆☆☆
第六章 Caché 算法与数据结构 循环队列 ☆☆☆
第七章 Caché 算法与数据结构 双端队列 ☆☆☆
第八章 Caché 算法与数据结构 散列表 ☆☆☆☆☆
第九章 Caché 算法与数据结构 二叉树 ☆☆☆
第十章 Caché 算法与数据结构 二叉堆 ☆☆☆
第十一章 Caché 算法与数据结构 优先队列 ☆☆☆
第十二章 Caché 算法与数据结构 冒泡排序 ☆☆☆☆☆
第十三章 Caché 算法与数据结构 鸡尾酒排序 ☆☆☆
第十四章 Caché 算法与数据结构 快速排序 ☆☆☆
第十五章 Caché 算法与数据结构 堆排序 ☆☆☆
第十六章 Caché 算法与数据结构 计数排序 ☆☆☆
第十七章 Caché 算法与数据结构 希尔排序 ☆☆☆
第十八章 Caché 算法与数据结构 选择排序 ☆☆☆
第十九章 Caché 算法与数据结构 插入排序 ☆☆☆
第二十章 Caché 算法与数据结构 归并排序 ☆☆☆
第二十一章 Caché 算法与数据结构 基数排序 ☆☆☆
第二十二章 Caché 算法与数据结构 桶排序 ☆☆☆
第二十三章 Caché 算法与数据结构 二分查找 ☆☆☆☆
第二十四章 Caché 算法与数据结构 斐波那契查找 ☆☆☆☆
第二十五章 Caché 算法与数据结构 插值查找 ☆☆☆☆
前言 -
经过一个月的连载《Caché 算法与数据结构》基础系列终于连载完毕。主要讲解了数据结构,排序算法,查找算法。此次《Caché 算法与数据结构》基于应用最普遍的JAVA开发语言,实现了与JAVA数组,堆,栈,MAP,队列,链表等数据结构,方便Caché 实现一些复杂的逻辑结构。由于个人能力有限,还有一些比较高级的算法与数据结构还没有实现,例如AVL树,2-3树,2-3-4树,B树,Tire树,贪心算法,分治算法,动态规划,回溯枚举算法,堵塞队列,并发队列,斐波那契堆等。对于有一些问 题的分析难免会有纰漏。实例中的解决方法也不是尽善尽美,每一章节笔者都留有思考 ,感兴趣的朋友可以思考实现完成之后留言一起讨论。也希望发现其他问题的朋友 及时向笔者反馈。
-
由于笔者整理的是基础版本,所以不会太难,大家可以对着代码练习一遍,相信会对个人的编程能力和程序员基本思想都有帮助。
预告 - 下一期系列将用一个月的时间连载,《Caché 命令大全》,Caché 命令是大家最常用,日常接触最多的。但是相信大部分人针对命令只知道其一,不知道其二,每个命令都一些独特且非常好用的用法,根据28原则,这次《Caché 命令大全》将对所有命令做出一个详细的概述和讲解,每章开始都会有一个我梳理的重点概念。
交流群 - QQ群号:410039091
- 笔者QQ:454115408
- 公众号:技术理科直男
-
-
集合篇1.算法与数据结构
2020-03-30 00:14:48@[算法与数据结构之一] 算法和数据结构是程序员的内力; 1.如何有效的学好算法和数据结构 《异类一不一样的成功启示录》作者:马尔科姆 精通一个领域: == Chunk it up(切碎知识点) Deliberate practicing(刻意...算法与数据结构之一
算法和数据结构是程序员的内力;
1.如何有效的学好算法和数据结构
《异类一不一样的成功启示录》作者:马尔科姆
- 精通一个领域:
Chunk it up(切碎知识点)
Deliberate practicing(刻意的练习)—>不舒服、枯燥、乏味的地方;
Feedback(反馈)---->看高手代码(Github,Leetcode等)
- 数据结构中的联系
切题四件套:
Clarification:
Possible solutions:compare(time/space) 、optimal(加强)等
Coding:(多写)
Test cases
2.如何计算时间复杂度
数据结构与算法的分解:
- 常用的时间复杂度;
递归思想:一个分叉的树有大量的重复计算;O(2^n)
动态规划思想:时间复杂度为O(n);- Master Theorem:
3.如何使用LeetCode和剑指office
- 做题
- 时间复杂度和空间复杂度
- Editor:Atom、Visual Code 、VIm等
FeedBack
Discuss、solutioon;
4.数组和链表
1.数组:可以索引O(1)、插入或删除平均O(n);
2.链表(Linked List):使用于插入和删除很多O(1),查找O(n);- 面试习题:
- 202 Reverse Linked List:反转单链表
主要考代码的实现能力;
- detect cycle: 判断链表是否有环(快慢指针);
5.堆栈、队列(Stack、Queue)
- 20.括号匹配是否合法
- 232、使用堆栈实现队列:堆栈1永远只进,堆栈2用于只出,并堆栈2不为空,将其导入堆栈1中;
- 225、使用队列实现堆栈;
6.优先队列
正常入、按照优先级出;
- 实现方式:
1.堆(最小堆、最大堆)来实现,
2.树来实现
Heap wiki:
- 703.实时判断数据流中前k大的元素—>堆实现、优先队列
- 239.滑动窗口最大值---->使用优先队列时间复杂度降级,不用排序了;维护堆是O(logk), 查看是O(1),总体是O(NlogK); 也可以使用deque双端队列;
队列中的元素中最大值始终放在最左端,其中元素数量不一定为k;O(n);
7.哈希表:映射(Map) & 集合(Set)
哈希函数:计算出存放的正确存储位置,这样查找时时间复杂度为O(1)
哈希的冲突:拉链法解决,即每一个后面存放多个(链表的形式);集合不允许存放重复元素
HashMap(哈希表实现O(1),无序)) vs TreeMap(二叉树实现O(logn),有序)
HashSet vs TreeSet- 242、有效的字母异位词:第一种方法对每个字符串排序(Nlog(N)); 第二种使用map来计数;O(n)
- 1.两数和:
- 15.三数和为0,暴力三层循环O(n3),集合O(n2)空间复杂O(N); 先排序,在两头查找法O(N2)
8.树、二叉树、二叉搜索树;
- 精通一个领域:
-
算法与数据结构系列
2017-07-04 14:10:24 -
算法与数据结构相关书籍
2018-05-28 19:21:53算法与数据结构 *《算法(第4版)》 《Python算法教程》 《算法导论(原书第2版)》 《算法设计与分析基础(第3版)》 《学习 JavaScript 数据结构与算法》 《数据结构与算法分析 : C++描述(第4版)》 ... -
算法与数据结构学习网址
2018-09-26 17:30:34数据结构和算法动态可视化 ... 算法与数据结构 https://www.itcodemonkey.com/category/TheAlgorithm/ 用python实现基本数据结构和算法 https://python-web-guide.readthedocs.io/zh/latest/algorithms/algorithms.... -
王争-算法与数据结构专栏第一期福利笔记(数据结构与算法学习书单)
2019-07-04 17:38:03算法与数据结构书籍由浅入深: 闲暇拓展知识面: 《算法帝国》:文科生也可以看懂 《数学之美》 《算法之美》 入门书:(有感性认识) 《算法图解》200页 《大话数据结构》400页 《数据结构和算法分析》 ... -
集合篇3.算法与数据结构面试
2020-04-12 15:05:42算法与数据结构1.树2.堆与栈3.数组4.排序5.哈希6.动态规划7.链表8.高级算法 详细链接 1.树 请你来说一说红黑树和AVL树的定义,特点,以及二者区别? 请你说一下哈夫曼编码? 请你回答一下map底层为什么用红黑树实现... -
算法与数据结构的python概述
2019-12-23 15:17:39算法与数据结构概述 引子 **问题一:1+2+3+4+5+......+10000=?** 第一种解法: 1+2=3,3+3=6,6+4=10,10+5=15… 这是要算到猴年马月的节奏呀 果断弃之 第二种解法: 聪明的高斯,这样玩: (1+10000)×10000÷2=... -
算法与数据结构(面向对象思想)
2018-07-19 20:44:10算法与数据结构和编程之间关系 计算机就是算法与数据结构, 当你选择搜索这类的文章的时候,你已经在翻大山了 编程就是当你翻过一座山的时候,你发现前面还有一座更高的山. LZ从事java工作一年了,最近听见同事... -
算法与数据结构知识点总结
2014-11-05 00:57:36算法与数据结构: 1.数据结构:数据、数据元素、数据对象、数据结构、数据类型、抽象数据类型(DAT)。 2.算法:有穷性、确定性、可行性、输入(0个或多个)、输出(1个或者多个输出)。 3.排序算法: 冒泡排序:... -
【算法与数据结构 08】字符串 —— 字符串匹配算法(面试高频考点!)
2020-09-03 12:30:52小白专属的《算法与数据结构》,夯实基础,直击面试! -
算法与数据结构---选择排序
2017-10-16 14:23:04算法与数据结构—选择排序算法思路 例如:给定一个无序数组int arr={1,3,2,6,9}; n代表集合数组的长度,给出一个算法将数组arr按照从小到大的顺序进行排列。 选择排序:遍历[i,n)寻找最小值,找到之后与i的位置... -
算法与数据结构---插入排序
2017-10-16 14:23:38算法与数据结构—插入排序算法思路 例如:给定一个无序数组int arr={1,3,2,6,9}; n代表集合数组的长度,给出一个算法将数组arr按照从小到大的顺序进行排列。 插入排序:看当前位置i的值是否比它前一个数小,如果... -
[心得]算法与数据结构学习笔记
2016-10-16 17:59:36引言想来算法与数据结构方面的书我读了好几本了。是时候真正动手写功能了,因此关于算法和数据结构系列博客也算是收个尾巴。干货Kurt Mehlhorn和Peter Sanders这本书200来页,涵盖那么宏大的两个主题,因此必然是... -
基础算法与数据结构总结
2018-08-22 12:32:39写了不少代码,感觉越往上走基础越重要,最近看完《数据结构与算法分析》这本书,一些基本的编程思想和算法都在里面,在这里总结一下。 数据结构如图: 基本算法如图: 思维导图下载:... -
Java算法与数据结构、设计模式、高并发视频教程免费下载
2019-03-04 13:01:21Java算法与数据结构、设计模式、高并发视频教程免费下载! 链接:http://pan.baidu.com/s/1gfyobmF 密码:bef5 链接我就不放出来了,太容易失效。需要这套视频教的网页,可以扫描下方的微信二维码,关注“业余草... -
数据结构视频教程 -《[中山大学]算法与数据结构(C语言版)[胡青主讲]》
2018-12-24 10:05:33整个视频打包下载地址:史上最全的数据结构视频教程系列分享之《[中山大学]算法与数据结构(C语言版)[胡青主讲]》,转载请保留出处和链接! 更多优秀资源请访问:我是码农 本课程由中山大学胡青老师主讲,非常精彩... -
【算法与数据结构 10】哈希表——高效查找的利器
2020-09-24 17:03:21大家都在看的高效《数据结构与算法》! -
面试复试重点 算法与数据结构
2018-11-23 16:29:09算法、数据结构 一:算法 1. 算法的几个特征是什么。 2. 算法复杂性的定义。大O、θ、Ω、小o分别表示的含义。 3. 递归算法的定义、递归算法的两要素。 4. 分治算法的思想,... -
【算法与数据结构】必备知识点汇总
2019-07-01 19:27:141.数据结构基础 2.线性表(顺序存储、链式存储) 元素之间是有顺序的:第一个元素无前驱,最后一个元素无后继,其他元素都有前驱和后继 顺序存储结构:用一段地址连续的存储单元一次存储线性表的数据元素(存取... -
程序员代码面试指南 IT名企算法与数据结构题目最优解.pdf
2016-08-10 22:46:52程序员代码面试指南 IT名企算法与数据结构题目最优解 有目录需要的加qq203114194 -
史上最系统的算法与数据结构书籍推荐!!!!!吐血整理!!
2020-07-13 13:16:10史上最系统的算法与数据结构书籍推荐!!!!!吐血整理!! 史上最系统的算法与数据结构书籍推荐!!!!!吐血整理!! 前言:技术书阅读方法论 一.速读一遍(最好在1~2天内完成) 人的大脑记忆力有限,在一天内... -
算法与数据结构复习题 第一章 绪论
2019-11-28 12:26:04文章目录第一章 绪论书面作业一、判断题二、单选题三、程序填空 第一章 绪论 书面作业 一、判断题 1、数据的逻辑结构说明数据元素之间的...算法与程序有区别,算法是解决问题的方法或步骤,而程序是用编程语言描述算... -
算法与数据结构之单链表
2015-10-21 13:17:12从终端输入一组整数,以0作为结束标志,将这一簇整数存放在一个链表中(不包括0),打印出该链表中的值,然后删除链表中的第五个元素,打印出删除后的结果。... /*数据域*/ struct node *next; /*指 -
leetcode常见算法与数据结构汇总
2019-04-02 09:29:00leetcode刷题之后,很多问题老是记忆不深刻,因此特意开此帖: 一、对做过题目的总结; 二、对一些方法精妙未能领会透彻的代码汇总,进行时常学习;...1.1)基础算法原理与实现: 十大排序算法:C++ 1.2) ... -
算法与数据结构的基本概念
2017-12-10 15:25:22无论是在大学还是工作中,对于从事程序相关工作的人来说,数据结构与算法都是非常非常重要的,然而很多人意识不到这点。这是因为,我们当今的软件行业从事人员没有一个良好的职业素养,很多科班出身的人与培训机构的... -
算法与数据结构之二叉树
2015-10-21 13:40:13#include #include #include #define maxsize 20 typedef int elemtype; typedef struct node //定义 { elemtype data; struct node *lchild; struct node *rchild;...void createbtnode(btnode *&b
-
Excel高级图表技巧
-
24 表达式与运算符.mp4
-
python 数据结构与算法 长贴
-
备战2021软考网络规划设计师顺利通关培训套餐
-
ruby3level.zip
-
数据类型转换、运算符、方法入门
-
LeeCode139单词拆分(Java)(dp动态规划)
-
【2021】Python3+Selenium3自动化测试(不含框架)
-
Git工具使用记录
-
XML&JSON
-
二叉搜索树
-
云计算基础-Linux系统管理员
-
Anker 推出苹果二合一磁吸无线充电器:售价 328 元
-
字符串/数组 编程例题
-
寒假每日一题打卡day10——ACWing[1532. 找硬币
-
Selenium3分布式与虚拟化
-
Hanming三阶基础之F2L - 持续更新中
-
Netty中使用的设计模式
-
[微语 21.01.19] 毫厘
-
题型举例11111.txt