数据结构与算法拾遗
文章平均质量分 56
本专栏主要通过【数据拾遗】和【算法拾遗】两个系列来讲解数据结构与算法方面的知识。
XD---SJS
这个作者很懒,什么都没留下…
展开
-
【算法拾遗(java描述)】--- 插入排序(直接插入排序、希尔排序)
插入排序基本思想 每次将一个待排序的记录按其关键字大小插入到前面已经拍好序的子文件的适当位置,直到全部记录插入完成为止。直接插入排序基本思想 直接插入排序的基本操作是将一个记录插入到已排好序的有序表中,从而得到一个新的有序表。即假设待排序的记录存放在数组R[1······n]中,排序过程中,R被分成两个子区间R[1······i]和R[i+1······n],其中,R[1······i]是原创 2015-12-26 17:40:52 · 1879 阅读 · 6 评论 -
【算法拾遗(java描述)】--- 选择排序(直接选择排序、堆排序)
选择排序的基本思想 每一趟从待排序的记录中选出关键字最小的记录,顺序放在已排好序的子文件的最后,知道全部记录排序完毕。主要有两种选择排序方法:直接选择排序(或称简单选择排序)和堆排序。直接选择排序基本思想 第i趟排序开始时,当前有序区和无序区分别为R[1 …… i-1]和R[i …… n](1 <= i <= n-1),该趟排序则是从当前无序区中选出关键字最小的记录R[k],将它与无序区的原创 2015-12-18 19:16:36 · 1433 阅读 · 2 评论 -
【算法拾遗(java描述)】--- 交换排序(冒泡、快排)
交换排序基本思想:两两比较待排序的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。 应用此排序思想的有冒牌排序和快速排序,其中冒泡排序属于简单算法,快速排序属于改进算法。冒泡排序基本思想 两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。具体算法前提条件:序列 s = {s0,s1,……sn-1}是n个可排序元素的序列。令j从n-1递减到1,重原创 2015-12-16 21:47:40 · 1144 阅读 · 0 评论 -
【算法拾遗(java描述)】--- 排序算法概述
概念 假设含有n个记录的序列为{r1,r2,……,rn},需要确定1,2,……,n的一种排列p1,p2,……,pn,使其相应的关键字满足kp1<=kp2<=……<=kpns非递减(或非递增)关系,即使得序列成为一个按关键字有序的序列{rp1,rp2,……,rpn},这样的操作就称为排序。这个定义说的很清楚,所谓排序就是对关键字的操作,对于同一个记录集合而言,可能会存在很多关键字,可能会存在主关原创 2015-12-13 16:07:19 · 661 阅读 · 0 评论 -
【数据拾遗(java描述)】--- 哈夫曼树的基本实现
相关定义节点之间的路径长度:在树中从一个结点到另一个结点所经历的分支,构成了这两个结点间的路径上的经过的分支数称为它的路径长度树的路径长度:从树的根节点到树中每一结点的路径长度之和。在结点数目相同的二叉树中,完全二叉树的路径长度最短。结点的权:在一些应用中,赋予树中结点的一个有某种意义的实数。结点的带权路径长度:结点到树根之间的路径长度与该结点上权的乘积。树的带权路径长度(Weighted原创 2015-12-06 23:29:04 · 584 阅读 · 0 评论 -
【数据拾遗(java描述)】--- 二叉树的基本操作
总结了一下二叉树的基本操作,包括先序遍历、中序遍历、后序遍历的递归形式和非递归形式(栈实现),以及层次遍历(队列实现)等。主要代码import java.util.Queue;import java.util.Stack;import java.util.concurrent.LinkedBlockingQueue;/** * 简单的二叉树构造 * * @author xdsjs *原创 2015-12-06 12:55:50 · 876 阅读 · 1 评论 -
不同级数复杂度的计算
算数级数:与末项平方同阶 T(n) = 1+2+…+n = n(n+1)/2 = O(n2)幂方级数:比幂次高出一阶 T2(n) = 12 + 22 + 32 + … + n2 = n(n+1)(2n+1)/6 = O(n3) T3(n) = 13 + 23 + 33 + … + n3 = n2(n+1)2/4 = O(n4) T4(n) = 14 + 24 + 34原创 2015-12-03 16:28:41 · 2424 阅读 · 0 评论