摘要: 队列有两种形式:链式队列和静态队列,静态队列一般用数组实现,数组的优点是集中存储,内存访问快,若是用数组实现,一定是循环队列,否则会造成巨大的内存浪费。 应用场景:限流、排队 C语言: 测试结果: 阅读全文
posted @ 2019-02-20 11:35 林牛克思 阅读(1025) 评论(0) 推荐(0) 编辑
摘要: 各种常用排序算法 类别 排序方法 时间复杂度 空间复杂度 稳定性 复杂性 特点 最好 平均 最坏 辅助存储 简单 插入 排序 直接插入 O(N) O(N2) O(N2) O(1) 稳定 简单 希尔排序 O(N) O(N1.3) O(N2) O(1) 不稳定 复杂 选择 排序 直接选择 O(N) O( 阅读全文
posted @ 2019-01-30 14:56 林牛克思 阅读(2103) 评论(0) 推荐(0) 编辑
摘要: 希尔排序的原理: java代码: 性能分析: 时间复杂度:O(n^2) 空间复杂度:O(1) 原地排序:是 稳定排序:否 阅读全文
posted @ 2019-01-30 14:55 林牛克思 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 快速排序原理: 选择一个关键值作为基准值。比基准值小的都在左边序列(一般是无序的),比基准值大的都在右边(一般是无序的)。一般选择序列的第一个元素或最后一个元素(还可以3个元素(第一个,中间,最后一个)取中)。 java代码:(随机选取一个基准值) 性能分析: 时间复杂度:O(n*logN) 空间复 阅读全文
posted @ 2019-01-30 14:24 林牛克思 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 归并排序原理: 利用分治的思想,通过递归来实现的, java代码: 性能分析: 时间复杂度:O(n*logN) 空间复杂度:O(n) 原地排序:否 稳定排序:是 阅读全文
posted @ 2019-01-30 13:57 林牛克思 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 插入排序的原理: 插入排序有点类似选择排序,在未排序序列中找到最小元素,存放到排序序列的起始位置 再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。 以此类推,直到所有元素均排序完毕。区别是:选择排序是交换,插入排序是部分平移。 java代码: 性能分析: 时间复杂度:O(n^2) 空间复 阅读全文
posted @ 2019-01-30 13:50 林牛克思 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 简单选择排序原理: 性能分析: 时间复杂度:O(n^2) 空间复杂度:O(1) 原地排序:是 稳定排序:否 阅读全文
posted @ 2019-01-30 11:31 林牛克思 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 冒泡排序的原理: 代码还有改进的空间,如果排序到后面都是有序的了,此时无需继续比较了,例如:对于一个有序度比较高的数组{1,2,3,4,6,5},第一次冒泡变成{1,2,3,4,5,6},第二次冒泡没有交换数据,此时数组已经是有序的,无需继续冒泡下去。 java代码: 性能分析: 时间复杂度:O(n 阅读全文
posted @ 2019-01-30 11:18 林牛克思 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 时间复杂度: 定义:在进行算法分析时,语句的总执行次数T(n)是关于问题的规模n的函数,进而分析T(n)随着n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间时间量度,记做:T(n)=O(f(n))。它表示随着问题的规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算 阅读全文
posted @ 2019-01-23 17:40 林牛克思 阅读(297) 评论(0) 推荐(0) 编辑
摘要: 问:什么是数据结构? 答:一组数据的存储结构。 问:什么是算法? 答:操作数据的一组方法。 数据结构和算法是相辅相成的,数据结构为算法服务,算法要作用在特定的数据结构之上。下面的数据结构和算法的思维导图: 其中有20个最常用的、最基础的数据结构与算法: 10个数据结构:数组、链表、栈、队列、散列表、 阅读全文
posted @ 2019-01-17 14:09 林牛克思 阅读(3513) 评论(1) 推荐(0) 编辑