java数据结构与算法
小码农叔叔
这个作者很懒,什么都没留下…
展开
-
java数据结构之折半查找
折半查找,也称二分法查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法,这里强调有序表明这种算法的特定使用场景;搜素过程为,从数组中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组已经为空,则表示找不到指定的元素。这种搜索算法每一次比较都使搜...原创 2018-11-11 18:45:34 · 7696 阅读 · 0 评论 -
java数据结构之选择排序
作为java排序算法中的一种经典的排序算法,选择排序的思想还是比较容易理解的,其主要的排序过程为:每一趟从待排序记录中选出最小元素,顺序放在已排好序的最后,直到全部记录排序完毕。也就是:每一趟在n+1(i=1,2,…n)个记录中选取关键字最小记录作为有序数组中第i个记录,基于此思想的算法主要有简单选择排序、树型选择排序和堆排序。(这里只介绍常用的简单选择排序)简单选择排序的基本思想:给定数组...原创 2018-11-19 19:07:22 · 7267 阅读 · 0 评论 -
java数据结构之快速排序
排序算法是java数据结构的基础,也是程序员必备的基础算法之一,个人认为,了解并掌握排序算法的思想比起单纯用代码实现功能更有意义,毕竟创造这套算法的思想才是最高的智慧嘛,下面就来说说关于排序算法中的比较经典的算法——快速排序;先用几张示意图来说说快速排序的思想,1、首先给定一个无序的数组,定义两个指针i和j,他们的起始位置分别是左边的最小下标和右边的最大下标,同时为方便起见,这里使用数组的第一...原创 2018-11-18 11:37:38 · 7567 阅读 · 0 评论 -
java多叉树的遍历
用过了二叉树后,正好业务上有一个需求,就是需要求出从根节点到每个叶子节点的路径集合,由于不是二叉树,而是如同一种多叉树的结构,下面来看具体代码,1、节点对象,包含3个属性,当前节点Id,持有的父节点Id,当前节点的内容,public class TreeNode { /** 节点Id */ private String nodeId; /** 父节点Id */ private Str...原创 2019-01-23 08:54:26 · 8140 阅读 · 0 评论 -
java排序算法之选择排序
选择排序是表面最稳定的排序算法之一,因为无论什么数据进去,其时间复杂度都是O(n*n),所以如果你的数据规模不大的话,可以考虑使用选择排序,因为它是基于内存排序的算法,速度很快,它的工作原理是:在未排序的序列中找到最小(最大)的元素,放在序列的起始位置,然后再从剩余序列中继续寻找最小最大元素,放到已排序的元素末尾,以此类推,直到所有的元素都排序完毕;原理很好理解,下面就来看具体的代码实现,/...原创 2019-02-12 17:20:25 · 7073 阅读 · 0 评论 -
java排序算法之插入排序
插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。插入排序的大体执行步骤如下:从第一个元素开始,该元素...原创 2019-02-12 21:52:21 · 7079 阅读 · 0 评论 -
java排序算法之希尔排序
希尔排序相对插入排序来说更加高效,是时间复杂度突破T(n*n)的另一种高效的简单排序,希尔排序的执行流程可描述为: 一组无序的数列,选择一个增量,即gap = arr.length/2,以此增量为标的,进行第一趟数据分组与排序,然后缩小增量,继续以gap = gap/2的方式进行分组和排序, 每趟排序,根据对应的增量ti,将待排序列分割成若干长度为m 的子序列,分别对各子表进行直接插入...原创 2019-02-13 22:47:00 · 6847 阅读 · 0 评论