Algorithm
文章平均质量分 72
常用算法,基础以及进阶
Reborn_Chang
学无止境
展开
-
计数排序CountingSort
桶排序是什么? 桶排序 (Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的数组内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是 比较排序,他不受到 O(n log n) 下限的影响。(摘自百度百科)...原创 2018-06-14 17:01:20 · 10346 阅读 · 5 评论 -
希尔排序ShellSort
首先来说下百度百科上对希尔排序算法思想的定义: 该方法实质上是一种分组插入方法 比较相隔较远距离(称为增量)的数,使得数移动时能跨过多个元素, 则进行一次比较就可能消除多个元素交换。D.L.shell于1959年在以他名字命名的排序算法中实现了这一思想。 算法先将要排序的一组数按某个增量d分成若干组,每组中记录的下标相差d.对每组中全部元素进行排序, 然后再用一个较小的增量对它进行,在每...原创 2018-06-11 17:18:28 · 699 阅读 · 0 评论 -
插入排序InsertSort
插入排序,就像是打斗地主的时候把自己手里的牌按照大小排序,总数组长度就是一个人对多起牌的长度,一开始手里一张牌,这张牌就是最小的,放最左边,再起一张,拿这张跟第一张比较(依次跟前面的比较大小),小于第一张的话就排第一位,最先起的放第二位(交换位置),这样,手里的牌已经是按照大小排序过的了.依次类推,直到牌面起完,也就排好了所有的牌面. 基于这个思想,说下代码排序原理: 有一个tempArray...原创 2018-06-07 10:39:02 · 167 阅读 · 0 评论 -
冒泡排序BubbleSort(两种写法)
冒泡排序的核心理念是什么?那就是相邻两数比较,前面的数比后面的数小的话,就交换位置,每次循环找到该次排序的最小值,然后放到该次循环数组的队尾,因此便利到最后,留的就是最大的数. 那么在这里说下冒泡排序的两种写法,一种是从前往后遍历,另一种是从后往前遍历,这两种遍历方式代码如下:System.out.println("\n____________________________________...原创 2018-06-06 18:05:21 · 11887 阅读 · 0 评论 -
选择排序SelectionSort
排序的方法有很多,冒泡排序,TopK,快排之类的,这里先说下选择排序(SelectionSort). 先说下这个排序方法的核心思想:循环遍历,每次找到最小值,然后与该次排序数组的首位交换位置.比如: 定义的活动数组长度为:5 ———开始排序——- 排序前的数组为: 2 4 4 0 0 此趟排序,最小值为第4个位置上的0与第1个位置上的2交换位置>> 经过第1次排序后...原创 2018-06-05 16:24:14 · 246 阅读 · 0 评论 -
TopK算法 排序
本文转自:http://blog.csdn.net/Together_CZ/article/details/65945838?locationNum=15&fps=11、查找最大的k个元素1、排序,快速排序。我们知道,快速排序平均所费时间为n*logn,从小到大排序这n个数,然后再遍历序列中后k个元素输出,即可,总的时间复杂度为O(n*logn+k)=O(n*logn)。...转载 2018-02-23 09:41:09 · 11670 阅读 · 0 评论