 ``` # 空间复杂度是指本算法是不是需要开辟一块新内存,如果需要开辟新内存则是O(n)否则是O(1)。 # 如果是... ...
分类:
编程语言 时间:
2019-09-30 20:00:19
阅读次数:
61
归并排序 排序动图演示 整体效果: 排序细节: 排序原理: 归并排序就是递归得将原始数组递归对半分隔,直到不能再分(只剩下一个元素)后,开始从最小的数组向上归并排序 1. 向上归并排序的时候,需要一个暂存数组用来排序, 2. 将待合并的两个数组,从第一位开始比较,小的放到暂存数组,指针向后移, 3. ...
分类:
编程语言 时间:
2019-09-27 22:38:01
阅读次数:
99
rank10 T1 平均数 二分答案,让所有的数减去这个答案,求前缀和, 然后验证子序列平均数比这个答案小的的个数是否等于K 只需要找前缀和的逆序对个数即可(归并排序) T2 涂色游戏 70分算法 Dp转移,先考虑对于确定的j个颜色,然后涂上一列的方案数 设g[i][j] 表示涂了i个格子j个颜色有 ...
分类:
其他好文 时间:
2019-09-27 15:05:58
阅读次数:
66
java集合提供的排序算法 Arrays.sort()排序算法 如果数组长度大于等于286且连续性好的话,就用归并排序,如果大于等于286且连续性不好的话就用双轴快速排序。如果长度小于286且大于等于47的话就用双轴快速排序,如果长度小于47的话就用插入排序。 Collection.sort()的排... ...
分类:
编程语言 时间:
2019-09-27 01:18:39
阅读次数:
111
以作者的水平为准 基础算法:枚举——>倍增 差分(前缀和)——>二维 贪心 分治:归并排序(逆序对) 二分答案 二分查找 快速排序——>离散化 递归/递推 搜索:深搜(所有方案),宽搜(最优解) DFS优化:迭代 最优性剪枝/可行性剪枝/搜索顺序 记忆化搜索 折半搜索 A*/IDA* BFS优化:双 ...
分类:
其他好文 时间:
2019-09-26 23:47:06
阅读次数:
194
Python八大算法的实现,插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序。 1、插入排序 描述 插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法 ...
分类:
编程语言 时间:
2019-09-19 21:09:41
阅读次数:
81
/* MergeSort 归并排序 复杂度: n*log(n) */ #include using namespace std; void MergeSort(int a[], int s, int e, int tmp[]); void Merge(int a[], int s, int m, i... ...
分类:
编程语言 时间:
2019-09-15 18:57:08
阅读次数:
100
题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 解题思路 两种解法:递归和非递归 这个题目就是归并排序中的归并操作,将两个有序数组(链表)合并为一个有序的数组。 非递归: 第一个while循环,将 l1 和 l2 进行比较,谁小谁就合并到 li ...
分类:
其他好文 时间:
2019-09-15 09:16:04
阅读次数:
145