一 哈夫曼树 1.1 基本概念 + 算法思想 + "贪心算法" (以局部最优,谋求全局最优) + 示例 + 【树论:最优(二叉)数=带权路径最短的树】 + "哈夫曼(树)编码" + 【图论: "最小(代价)生成树" 】 + "普里姆算法(Prim)(加点法,归并点)" + "克鲁斯卡尔(Kruska ...
分类:
编程语言 时间:
2019-09-26 11:41:43
阅读次数:
151
普通二分查找 普通版很简单就不详细总结了 二分查找中位数 题意:给定长度为n的两个有序序列,求两个序列合并后的中位数 直接归并法,找到第(2n+1)/2数时停止并输出答案,复杂度为O(n) 但题目要求logn,我们就得换个思路了; 题目给的是两个有序序列,所以两个序列的中位数都可以O(1)求得,那么 ...
分类:
其他好文 时间:
2019-09-23 15:05:35
阅读次数:
101
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
13:50:24 2019-09-14 继续把未看完的看完 排序算法 定理:任意$N$个不同元素组成的序列平均具有$N(N-1)/4$个逆序对 定理:任何仅以交换相邻两元素来排序的算法,其平均时间复杂度为$Ω(N^2)$ 这样子 冒泡排序 插入排序 的最坏情况都是 N^2 要使排序算法变高效 得使用 ...
分类:
其他好文 时间:
2019-09-14 19:15:08
阅读次数:
103
1 void mergeAdd(int arr[], int left, int mid, int right, int *temp){ 2 int i = left; 3 int j = mid + 1; 4 int k = left;//临时下标 5 while (i <= mid&&j <= ... ...
分类:
编程语言 时间:
2019-09-14 18:36:20
阅读次数:
112
针对 List 集合的方法 排序 sort 如果集合元素为基本数据类型,采用快排;对于集合元素为引用类型,采用归并排序。 java //List 必须是有序的,且按照自然顺序排序 int binarySearch(List list, T key); //List 必须有序,且根据 Comparat ...
分类:
其他好文 时间:
2019-09-14 00:56:44
阅读次数:
80