数据结构与算法
文章平均质量分 59
介绍常用数据结构和算法原理、效率分析、实际应用,java代码实现。
miliermili
这个作者很懒,什么都没留下…
展开
-
一步步学习数据结构和算法之归并排序效率分析及java实现
归并排序效率分析及java实现:public class Merge { /** * 归并排序原理:先拆分,再合并,归并排序首先将序列进行拆分直到每个序列不能拆分为止, * 然后对序列进行两两合并(合并的过程需要排序),知道最终只存在一个序列为止 * * 归并排序效率分析:归并排序运行的时间复杂度为O(nlogn) 空间代价为O(n) * * 最好情况和最差情况下时间原创 2014-04-04 15:25:50 · 1418 阅读 · 0 评论 -
一步步学习数据结构和算法之堆排序效率分析及java实现
堆排序效率分析及java实现:public class HeapSort { /** * 堆排序原理:首先构建一个最大堆,然后将堆顶元素和末尾元素进行交换,交换之后自上而下进行一次排序, * 堆排序时间复杂度为O(nlog2n),只是用了一个临时变量,所以空间占用率为O(1) * 最好情况:时间复杂度:O(nlogn) * 最坏情况:时间复杂度:O(nlogn) * 空间原创 2014-04-04 15:28:02 · 1316 阅读 · 0 评论 -
一步步学习数据结构和算法之选择排序效率分析及java实现
选择排序算法效率分析及实现:public class SelectSort { /** * 选择排序原理:从待排序序列中选出最小的元素,放入到已排好序列 * 元素比较次数:需要比较的次数为n(n-1)/2,总的元素移动次数为3(n-1) ,空间占用情况为O(1) * 元素交换次数: * 最好情况:最好的情况,元素移动的次数为0 * 最坏情况:和最好情况一致,元素需要移动3原创 2014-04-04 15:29:32 · 1894 阅读 · 0 评论 -
一步步学习数据结构和算法之快速排序效率分析及java实现
快速排序效率分析及java实现 /** * 快速排序原理:在序列中找到基准元素,大于基准元素的放在右边,小于基准元素的放在左边,然后对基准元素两边再次进行排序 * 快速排序是内部排序中最好的一个,平均情况下其效率为O(nlogn),由于其采用递归方式,递归次数取决于递归树的高度log2n,因此其占用的空间为O(log2n) *原创 2014-04-03 21:42:59 · 1593 阅读 · 0 评论 -
一步步学习数据结构和算法之希尔排序效率分析及java实现
希尔排序效率分析及java实现:public class ShellSort { /** * 希尔排序原理:设置间隔变量,将数组进行分组,组内排序,然后缩小间隔变量,直至间隔变量为1(结束条件) * 希尔排序的空间占用率为O(1), * * 希尔排序在平均情况下时间复杂度为O(nlogn),最好情况下为O(n的平方) * * 希尔排序是一种不稳定的内原创 2014-04-04 15:21:49 · 1319 阅读 · 0 评论 -
一步步学习数据结构和算法之冒泡排序效率分析及java实现
冒泡排序效率分析及java实现:public class BubbleSort { /** * 冒泡排序原理:冒泡排序的关键点在于元素两两比较并交换位置,每一轮的比较可以确定一个最大或者最小元素 * 冒泡排序时间复杂度:其需要比较的次数为n(n-1)/2 空间占用率为O(1) * 在最差的情况下即元素逆序其需要比较的次数和元素移动的次数相等 * * 当然可以对冒泡排序进行原创 2014-04-03 21:49:07 · 1314 阅读 · 0 评论 -
一步步学习数据结构和算法之折半插入排序效率分析及java实现
折半插入排序效率分析及java实现:public class BinaryInsertSort { /** * 折半排序原理:在将一个新元素插入到一个已经排好的序列中时,采用折半的方式找到元素的位置,是对直接插入排序的改进 * 元素比较次数:元素比较的次数好于直接插入排序,平均比较次数为nlogn, * 元素交换次数:折半排序元素移动的次数与直接插入元素移动的次数相同,均与元素原创 2014-04-03 21:47:33 · 1793 阅读 · 0 评论 -
一步步学习数据结构和算法之直接插入排序效率分析及java实现
直接插入排序效率分析及java实现:public class InsertSort { /** * 直接插入排序原理:将新元素插入到已排好序的子序列 * 元素比较次数:O(n2) * 元素交换次数: * 最好情况:对于一个从小到大的序列,要求以从小到大顺序输出,那么每次插入时只需比较一次,所以总共比较O(n),元素移动次数为0 * 最坏情况:对于一个从小到大的序列,要求反序输原创 2014-04-03 21:46:26 · 1708 阅读 · 3 评论 -
一步步学习数据结构和算法之常用排序效率分析及java实现
常用排序算法专题文章列表一步步学习数据结构和算法之选择排序效率分析及java实现一步步学习数据结构和算法之快速排序效率分析及java实现一步步学习数据结构和算法之直接插入排序效率分析及java实现一步步学习数据结构和算法之折半插入排序效率分析及java实现一步步学习数据结构和算法之冒泡排序效率分析及java实现一步步学习数据结原创 2014-04-04 16:18:36 · 3249 阅读 · 0 评论 -
二叉查找树原理分析及查找、插入、删除、遍历实现
二叉查找树作为一种最简单的二叉排序树,它是特殊的二叉树:对于二叉树,假设x为二叉树中的任意一个结点,x节点包含关键字key,节点x的key值记为key[x]。如果y是x的左子树中的一个结点,则key[y] >= key[x]。那么,这棵树就是二叉查找树。二叉查找树具有如下性质:1、如果节点左子树存在,那么左子树中的所有值均小于其根节点的值2、如果节点右子树原创 2014-04-08 19:29:04 · 2555 阅读 · 1 评论 -
KMP模式匹配算法原理分析、next数组优化及java实现
朴素的模式匹配算法通过对主串进行回溯,每次在匹配不成功时回溯到主串的i-j+2的位置(i为主串中匹配失败的位置,j为模式串中匹配失败的位置,其中模式串字符数组从位置1开始),KMP算法采用next数组,避免对主串的回溯,主要分析模式字符串的特征,确定在匹配失败情况下通过next数组获取应该模式串应该回溯的位置,next数组目的在于当主串和模式串的字符匹配发生失败时,可以获取模式串回溯的位置,从新和主串进行匹配原创 2014-04-07 21:56:37 · 3712 阅读 · 2 评论