针对一些要求in place的问题,使用双指针法可有效的解决。 1.数组 在空间复杂度为O(1)的情况下,移除数组中的元素 在空间复杂度为O(1)的情况下,去重已排序的数组 ...
分类:
其他好文 时间:
2019-11-23 23:52:57
阅读次数:
114
最近大二的dalao给大一宝宝讲了排序算法,发现自己也好久没有看排序了( sort真香 )。 所以来总结一波排序。 大一宝宝们看完选择性的吸收哦~ 总结: | 排序算法 | 平均复杂度 | 空间复杂度 | 稳定性 | | | | | | | 冒泡排序 | O(n2) | O(1) | 稳定 | | ...
分类:
编程语言 时间:
2019-11-22 09:13:32
阅读次数:
84
十大经典排序算法(python实现)(原创) 使用场景: 1,空间复杂度 越低越好、n值较大: 堆排序 O(nlog2n) O(1) 2,无空间复杂度要求、n值较大: 桶排序 O(n+k) O(n+k) 经典排序算法图解: 经典排序算法的复杂度: 大类一(比较排序法): 1、冒泡排序(Bubble ...
分类:
编程语言 时间:
2019-11-20 21:35:50
阅读次数:
65
跳跃表实现简单,空间复杂度和时间复杂度也较好,Redis中使用跳表而不是红黑树。 实现参考了: "跳跃列表 维基百科,自由的百科全书" 《Redis设计与实现》第五章 跳跃表 Redis源码3.0分支src/t_zset.c等文件 插入时的核心逻辑: 1. 找到插入的位置 2. 随机得到新插入节点的 ...
分类:
其他好文 时间:
2019-11-20 16:54:47
阅读次数:
71
题目描述: 在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 思路分析: 思路一:排序+遍历,如果是升序,那就是返回nums[n-k],如果是降序,那就是返回nums[k-1] 时间复杂度:O(Nlogn) 空间复杂度:O( ...
分类:
编程语言 时间:
2019-11-20 15:34:02
阅读次数:
81
1.实践题目 程序存储问题 2.问题描述 设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是 li,1≤i≤n。 程序存储问题要求确定这n 个程序在磁带上的一个存储方案, 使得能够在磁带上存储尽可能多的程序。 对于给定的n个程序存放在磁带上的长度,计算磁带上最多 ...
分类:
编程语言 时间:
2019-11-19 13:31:44
阅读次数:
60
1. 实践题目 程序存储问题 2. 问题描述 设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是 li,1≤i≤n。 程序存储问题要求确定这n 个程序在磁带上的一个存储方案, 使得能够在磁带上存储尽可能多的程序。 对于给定的n个程序存放在磁带上的长度,计算磁带上 ...
分类:
编程语言 时间:
2019-11-19 00:45:32
阅读次数:
81
冒泡排序细节的讲解与复杂度分析时间复杂度O(N^2),额外空间复杂度O(1) 选择排序的细节讲解与复杂度分析时间复杂度O(N^2),额外空间复杂度O(1) 插入排序的细节讲解与复杂度分析时间复杂度O(N^2),额外空间复杂度O(1) 剖析递归行为和递归行为时间复杂度的估算一个递归行为的例子maste ...
分类:
其他好文 时间:
2019-11-18 18:27:24
阅读次数:
57
一、程序存储问题 1、实践题目及问题描述 2、算法描述 这一道题其实就简单的对输入的各程序长度进行排序,然后在循环里进行叠加,后通过判断是否超过长度为L的磁带,若超过则将可存储的数目输出,若还可存储,则循环继续。 3、算法时间及空间复杂度分析(要有分析过程) 算法时间复杂度为O(n),用了一个for ...
分类:
编程语言 时间:
2019-11-18 09:50:21
阅读次数:
82
第四章实验报告 题目:程序存储器 问题描述: 设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是 li,1≤i≤n。 程序存储问题要求确定这n 个程序在磁带上的一个存储方案, 使得能够在磁带上存储尽可能多的程序。 对于给定的n个程序存放在磁带上的长度,计算磁带上 ...
分类:
其他好文 时间:
2019-11-18 00:06:09
阅读次数:
122