算法杂混
在程序设计中,算法的优劣,数据结构的合理选用很重要,夯实地基,巩固基础
战争学院
祖国的花朵
展开
-
堆排序-java实现
堆排序主要的过程就是建立大顶堆或者小顶堆,然后调整堆,最后进行堆排序。 ①建堆,建堆是不断调整堆的过程,从len/2处开始调整,一直到第一个节点,此处len是堆中元素的个数。建堆的过程是线性的过程,从len/2到0处一直调用调整堆的过程,相当于o(h1)+o(h2)…+o(hlen/2) 其中h表示节点的深度,len/2表示节点的个数,这是一个求和的过程,结果是线性的O(n)。 ②调整堆:调整堆原创 2015-12-01 09:09:53 · 312 阅读 · 0 评论 -
希尔排序-shellSort java实现
希尔排序的实质就是分组插入排序,如何选取关键字,选取关键字是希尔排序的关键。 其实就是两步: <1>取步长,然后对每一个步长内的数字进行排序 <2>改变步长,重复步骤一 <3>直到步长为1public static int[] shellSort(int[] A,int n){ i原创 2015-12-01 11:21:13 · 395 阅读 · 0 评论 -
计数排序
思路: 首先: 计算出待排序数组中最大值max与最小值min的差距,建立一个桶数组count; 其次: 用count数组的下标i来表示与最小值的差距,count[i]中来存待排序数组中有多少个与最小值的差距 最后: 我们知道count的下标i是表示与最小值的差距,所以说i+min就代表待排序数组中的原始值,count[i]表示统计原数组中与最小值差距为i的数目,所以可以根据这两点将count[原创 2015-12-01 19:18:56 · 331 阅读 · 0 评论 -
斐波那契数列算法分析
背景:假定你有一雄一雌一对刚出生的兔子,它们在长到一个月大小时开始交配,在第二月结束时,雌兔子产下另一对兔子,过了一个月后它们也开始繁殖,如此这般持续下去。每只雌兔在开始繁殖时每月都产下一对兔子,假定没有兔子死亡,在一年后总共会有多少对兔子?在一月底,最初的一对兔子交配,但是还只有1对兔子;在二月底,雌兔产下一对兔子,共有2对兔子;在三月底,最老的雌兔产下第二对兔子,共有3对兔子;在四月底转载 2015-12-15 21:46:33 · 332 阅读 · 0 评论 -
基数排序 (Radix Sort)
算法原理 ——————————————————————————————————— 基数排序 (Radix Sort) 是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。 ———— 排序过程:将所有待比较数值(必须是正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序;然后从桶中倒出所有数,完成一次排序;依次迭代到高位原创 2015-12-07 15:56:10 · 499 阅读 · 0 评论