摘要:
Sort 评价排序算法的标准 时间复杂度 空间复杂度 稳定性:如果一个排序算法能够保留数组中的重复元素的相对位置,则可以被称为是稳定的 冒泡排序 通过两两交换,每次循环都使最值上浮到开头或末尾 关键点在于每次循环结束后都将最值排在开头或末尾 public static void BubbleSort 阅读全文
摘要:
union-find 各种算法的实现,$N$ 为结点数。 | 算法 | connect() | find() | | | | | | quick-find | $N$ | $1$ | | quick-union | 树的高度(最好时 $1$,最坏时 $N$) | 树的高度 | | weighted- 阅读全文
摘要:
二分查找 不同的二分查找 用递归实现的二分查找 static int BinarySearch<T>(IList<T> list, T target) where T : IComparable<T> { return BinarySearch(list, 0, list.Count - 1, ta 阅读全文
摘要:
单链表 template <typename T> class LinkedList { typedef LinkedList self; typedef T value_type; class Node { friend LinkedList; public: template <typename 阅读全文
摘要:
压缩算法 不存在能够压缩任意比特流的算法 归谬法论证:如果该算法存在,由于比特流为离散值,压缩后的比特流至少比原比特流少一个比特,最终可以是任意小的,这显然是荒谬的 小规模字母表 ASCII 字符由 7 位表示,如果所使用的字符种类不足 65 种就可以用少于 7 位的比特记录每个字符,只需要添加一个 阅读全文
摘要:
Graph 引 在线性表中,数据结构是被串起来的,仅有线性关系,每个数据结构只有一个前驱和一个后继,而在树形结构中数据元素之间有明显的层次关系,并且每一层上的数据元素可能和下一层中的多个元素相关,但只和上一层中的一个元素相关。 在许多计算机应用中情况可能会变得更加复杂,由相连的节点所表示的模 阅读全文
摘要:
Hash 我们使用一个下标范围比较大的数组来存储元素。可以设计一个函数(哈希函数,也叫做散列函数),使得每个元素的关键字都与一个函数值(即数组下标)相对应,于是用这个数组单元来存储这个元素;也可以简单的理解为,按照关键字为每一个元素"分类",然后将这个元素存储在相应"类"所对应的地方。但是,不能够保 阅读全文
摘要:
查找算法 顺序查找 最简单形式的顺序查找 public static int LinearSearch<T>(IList<T> list, T target) { for (int i = 0, count = list.Count; i != count; ++i) // 一次比较 i and c 阅读全文