算法知识
宇你有源丶
Android系统开发从业人员。
展开
-
算法入门---java语言实现的选择排序小结
public class SelectionSort { /** * 选择排序。 顾名思义:先选择再排序。 假如一个序列完全未排序其为A(0.....n) * 然后就从此序列中依次的选择然后排序。 * 先找到最大(小)的数,放在第一个位置为已排序序列B(1)。然后从未排序的序列中 * C(2....n)再找到最大的数放到已排序的序列的尾端。依次循环的进行. 算原创 2017-03-06 20:32:16 · 377 阅读 · 0 评论 -
算法入门---java语言实现的二分搜索树小结
图片均来自慕课网,仅仅为了学习记录。1、二叉查找树(Binary Search Tree) 也可叫做二分查找树。它不仅可以查找数据,还可以高效地插入、删除数据。 特点:每个节点的key值大于左子节点,小于右子节点。注意它不一定是完全的二叉树。 所以节点的key是唯一的,我们就是通过它来索引key对应的value,注意图中标注的原创 2017-04-08 12:32:54 · 3123 阅读 · 2 评论 -
算法入门---java语言实现的并查集(Union-Find)小结
图片来自慕课网,仅仅为了记录学习。基本概念/** * * 并查集,用来解决连通问题的,两个节点之间是否是连通的。 * 此处的节点是抽象的概念:比如用户和用户之间,港口和港口之间。 * 用来看他们是否是连通的。典型的就是看你社交中任何人之间的关系是否认识. * 并查集问题和路径问题的区别:并查集比路径能做的操作少,它只能回答两个节点是否连通 * 路径还可以找到类似最短的连通点等等.但正因为原创 2017-04-08 12:22:34 · 4680 阅读 · 0 评论 -
算法入门---java语言实现的堆排序小结
1、概述。 HeapSort 堆排序:利用二叉堆这种数据结构来进行设计的一种排序算法,可以利用数组的特点快速定位指定索引的元素。 此处先了解几个基本概念: 二叉树:是树的一种,主要的特点是二叉树的所有节点最多只有两个叶节点。 完全二叉树:就是在二叉树当中,除了最后一层之外,其它所有层的节点都是满的,且最后一层的节点也是从左到右,优原创 2017-04-08 12:04:36 · 117 阅读 · 0 评论 -
算法入门---java语言实现的快速排序小结
/** * 快速排序。 * 核心思想:每次循环选中一个基准数,把大于等于这个基准数的元素放在它的右边,小于等于这个基准数的元素放在它的左边, * 这样最后(这一趟排序)这个基准数自然而然的就会到它应该在的位置,然后循环直到每个基准数都到应该到的 * 位置,然后整个数组就有序了。 * 注意:(对等于的处理虽然有多余操作,算法原创 2017-04-08 11:59:29 · 292 阅读 · 0 评论 -
算法入门---java语言实现的希尔排序小结
标准实现: /** * 希尔排序,是一种改进的插入排序。它是基于插入排序在元素基本有序的情况下效率很高(会中断比较直接返回)这一特性。 * 核心思想:以不同的间隔来分割待排序的序列,间隔按照某种规律减小,直到1,间隔的选择一定程度上影响希尔排序的 * 效率。被分割成不同的子序列后,依次对每个子序列进行插入排序,然后用更小的间隔分割序列再进原创 2017-04-08 11:53:10 · 448 阅读 · 0 评论 -
算法入门---java语言实现的插入排序小结
public class InsertSort { /** *你想啊,每个的前面都是比它小的,这样的组合肯定是有序的啊,细分到最小,每一个都需要遵守规则, * 这样就保证了前面的所有的,即使没和我挨着那么也是都比我小的。 * 插入排序的思想: * 元素从前往后,第一个元素排在它应该排的位置,然后去遍历第二个元素插入到它合适的位置, * 然后依次原创 2017-04-08 11:50:06 · 417 阅读 · 0 评论 -
算法入门---java语言实现的归并排序小结
package com.android.algriothm;/** * 归并排序 基本思想:将一个无序的集合,一半一半的递归的分成好几个有序的子集合(最终分成只有一个元素,那么也就相当于是有序了), * 然后在两两的依次归并到一块。重要的核心在于这个归并的过程。 归并的简单思想: * 首先这两个子序列是有序的,那么给定两个变量分别指向两个子序列的第一个元素。依次的比较谁小放在前面,此处需要借助一下原创 2017-03-08 15:16:16 · 386 阅读 · 0 评论 -
算法入门---java语言实现的冒泡排序小结
package com.zy.algorithm;public class BubbleSort { /** * 冒泡排序 顾名思义:每次比较两个数,然后当顺序有错误的时候进行交换。 * 这样看起来就是慢慢的把最小的冒出水面。 * 算法实现:也是通过两层for循环进行,最外层的for循环每执行一次就会把 最小的气 * 泡冒到前面(前面这些是已经排好序的),然后原创 2017-03-06 20:43:53 · 574 阅读 · 0 评论 -
算法入门---java语言实现的二分查找小结
package com.zy.serch;public class BinarySerch { /** * 二分查找。 * 前提:数据源是有序的。 * 核心思想:还是先确定要写的算法的区间,此处我们是按照src[left...right],左闭右闭来查找的。 * 首先我们找到中间的索引mid,此时数据源就成了src[left...mid-1]原创 2017-04-08 12:36:33 · 400 阅读 · 0 评论