algorithm
不止于言
idea is good,just talk is cheap , please show me code
展开
-
算法(1) 选择排序算法 java
简介:选择排序是一个时间复杂度为O(N^2)的基本排序算法,当然也有其适用的场景,比如说该算法的易于实现的特性,可应用于对某些实际问题的快速实现上. 原理:从未排序的数据中,选出最小的数据,然后与未排序的第一个数据进行比较交换操作,直到所有的数据都排好序. 步骤: ①在未进行排序的数据中,寻找到最小的数据,假设为A,并记录下该下标 ②用未排序的第一个数据B与从①中得到的数据A进行比较,如果原创 2018-01-04 16:38:12 · 198 阅读 · 0 评论 -
算法(2) 插入排序算法 java
简介:插入排序和选择排序一样都是时间复杂度为O(N^2)的排序算法,相较于选择排序,插入排序可以提前终止内层循环,因此在性能上如果使用得当,要比选择排序性能好,尤其是面对近乎有序的源数据时,性能更是碾压选择排序甚至会比一些O(NlgN)的算法还要好. 原理:将一个数组划分为两部分,第一部分是已经排好序的,第二部分为未排序的,从未排序部分的第一个数据开始,逐一与前面已排好序的数据进行比较,如果比那原创 2018-01-05 16:56:18 · 204 阅读 · 0 评论 -
算法(5) 快速排序 java
快速排序是对世界影响最大的排序算法之一,至于其背景之类的知识可百度获取. 思路如下: 假设待排序数组如下 现在要将4 放到4 应该放到的位置,快速排序的思想是将整个数组划分为两部分,一部分的数据都小于等于4,另一部分的数据都大于4,如下图: 继续抽象思路,观察上面的排列情况,假设待排序数组为[l,r]前闭后闭,[l+1,j]区间满足小于v,[j+1,i)前闭后开满足大原创 2018-01-23 18:01:18 · 207 阅读 · 0 评论 -
算法(3) 希尔排序 java
简介:希尔排序的实质其实是分组插入排序,再通俗的讲就是缩小增量排序,是一种比O(N^2)要好的排序算法,当然,是比不上O(NlgN)的算法. 原理:将整个待排元素序列分割成若干个子序列(由相隔某个增量值gap的元素组成),再分别对每个子序列进行快速插入排序,然后减少gap再进行快速插入排序,待gap减少到足够小,最好是减少到1的时候进行最后一次快速插入排序(gap为1的时候,相当于整个数组是一个原创 2018-01-08 15:24:53 · 173 阅读 · 0 评论 -
算法(4)归并排序 java
在介绍归并排序之前,先简单的说一下O(NlogN)和O(N2)之间的比较,通过下面的图片可以明显的看出来,前者的优势是很明显的,并且随着N的增大,优势会越来越明显,优化之后的代码可能意味着笨的算法一辈子都算不出来结果,而优化之后的算法,一瞬间就算出来了(细思极恐,这不就是现实生活吗...) 归并排序:归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用原创 2018-01-09 18:15:12 · 272 阅读 · 0 评论 -
算法(6) 最大堆
普通队列:先进先出,后进后出 优先队列:出队顺序和入队顺序无关;和优先级有关 优先队列主要操作: 1.入队 2.出队:取出优先级最高的元素 二叉堆 Binary Heap 1.在二叉树上任何一个节点都不大于父亲节点 2.必须是一个完全的二叉树:除了最后一层的节点之外,其他层节点个数必须是最大值,最后一层可以不是最大值,但是最后一层的所有节点都必须集中在最左侧 满...原创 2018-08-28 17:41:23 · 379 阅读 · 0 评论