数据结构与算法
未读
2.4 希尔排序(Shell Sort)
2.4 希尔排序(Shell Sort) 一. 定义 希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,是突破O(n2)的第一批算法。 希尔排序是把记录按下标的一定增量分组,对每组使
数据结构与算法
未读
2.3 插入排序(Insertion Sorting)
2.3 插入排序(Insertion Sorting) 一. 定义 插入式排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。 插入排序(Insertion Sorting)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元
数据结构与算法
未读
2.4 归并排序(Merging Sort)
2.4 归并排序(Merging Sort) 一. 定义 归并排序(Merging Sort)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答
数据结构与算法
未读
2.6 基数排序(Radix Sort)
2.6 基数排序(Radix Sort) 一. 定义 基数排序(radix sort)是1887年赫尔曼·何乐礼发明的,属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是通过键值的各个位的值,将要排序的元素分配至某些“
数据结构与算法
未读
2.5 快速排序(Quick sort)
2.5 快速排序(Quick sort) 一. 定义 快速排序(Quick sort)是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到
数据结构与算法
未读
2.7 堆排序(Heap Sort)
2.7 堆排序(Heap Sort) 一. 定义 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是选择排序的改进,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。 堆排序是具有以下性质的完全二叉树: 每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆, 注意 : 没
数据结构与算法
未读
5.0 树(Tree)
5.0 树(Tree) 一. 定义 树是n(n>=0)个结点的有限集。当n = 0时,称为空树。在任意一棵非空树中应满足: 有且仅有一个特定的称为根的结点。 当n>1时,其余节点可分为m(m>0)个互不相交的有限集T1,T2,…,Tm,其中每个集合本身又是一棵树,并且称为根的子树
数据结构与算法
未读
4. 哈希表(Hash Table)
4. 哈希表(Hash Table) 一. 定义 散列表(Hash table,也叫哈希表),是根据键(Key)而直接访问在内存存储位置的数据结构。也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做散列函数,存放记录的数组称做散列
数据结构与算法
未读
5.2 哈夫曼树(Huffman Tree)
5.2 哈夫曼树(Huffman Tree) 一. 定义 给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度(wpl)达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根结点较近。 路径:在一棵树中,从一