算法
文章平均质量分 67
Warren_Hoo
个人博客已迁往http://coredumper.cn/
展开
-
动态规划之0-1背包问题
0-1背包问题的解决思路如下:假设可选物品的个数为SIZE,用0~SIZE-1分别表示每个物品的索引号,数组w[SIZE]表示每个物品的重量,数组v[SIZE]表示每个物品的价值,f(i, aw)表示当可选取的物品索引号在0~i之间,并且背包还可以容纳的重量为aw时的最大价值。则有如下4中情况:当i=0且w[i]>aw时,f(i, aw)=0当i=0且w[i]当i>0且w[i]原创 2013-08-28 10:52:47 · 776 阅读 · 0 评论 -
动态规划之斐波那契数列
如果一个递归算法需要对相同的子问题进行多次重复计算,那么我们通常可以采用动态规划对其进行优化。动态规划的具体实现可以分为两类:一类是自顶向下的备忘录方法,这种方法只需要对原始的递归算法进行少量的改动,增加一个子问题解的记录,每当需要用到一个子问题的解时,首先查看这个记录,如果记录中存在需要的解,则可直接得到,如果不存在,则递归求解,并将结果记录下来。另一类是自底向上的迭代方法,这种方法从最基本原创 2013-08-27 15:14:47 · 1796 阅读 · 0 评论 -
冒泡排序
冒泡排序的原始版本:基本思想是在每一轮循环中,两两比较两个相邻的元素,如果两个元素是无序的则交换,这样每轮循环过后,都将本轮最大的元素移动到了正确的位置。void BubbleSort0(int A[], int N){ int i, j, temp; for(i = 0; i < N; ++i){ for(j = 0; j < (N - i - 1); ++j){ if(A[j]原创 2013-08-26 13:00:17 · 726 阅读 · 0 评论 -
选择排序
选择排序基本思想:每轮循环都做如下工作,选择本轮元素中的最小值并与相应位置的元素交换。void SelectSort(int A[], int N){ int i, j, minVal, minInd; for(i = 0; i < N; ++i){ minVal = A[i]; minInd = i; for(j = i + 1; j < N; ++j){ if(minV原创 2013-08-26 11:35:56 · 794 阅读 · 0 评论 -
快速排序
快速排序(Quick Sort)算法思想:采用分治法,首先选取一个主元,再将整个数组一分为二,使其中一个子数组的所有元素均小于等于主元,另外一个子数组的所有元素均大于主元,然后对两个子数组分别采用上述过程进行操作,所以这是一个递归算法。这里的主元是随机选取的,所以这里的快速排序算法应该叫做随机快速排序算法。快速排序算法的时间性能上界是O(N2),随机快速排序算法的时间性能平均值是O(N原创 2013-04-15 16:03:24 · 771 阅读 · 0 评论 -
归并排序
归并排序(Merge Sort)算法思想:采用分治法,首先将整个数组一分为二,然后将两个子数组分别排列为有序数组,再将两个有序子数组合并为一个有序子数组。其中第二步中对子数组的排序过程也采用上述过程进行,所以这是一个递归算法。归并排序的时间性能上界是O(NlogN)。由于在合并两个有序子数组时需要额外的存储空间,并且还有将数据拷贝到临时数组再拷贝回来的时间开销,所以归并排序不适合内部排原创 2013-04-13 16:31:03 · 838 阅读 · 0 评论 -
堆排序
堆排序(Heap Sort)算法思路:首先将待排序数组构造为大顶堆,大顶堆是一棵完全二叉树,而且每棵子树的根节点都是该子树的最大值。然后将堆顶元素与此时堆的最后一个元素交换,并将堆的规模减一,再构造一个新的大顶堆,循环进行下去直到堆中剩下一个元素为止,此时排序完成。构造大顶堆是通过下滤操作完成的。堆排序的时间性能上界为O(NlogN)。 #define LeftChild(i) (原创 2013-04-13 15:33:01 · 825 阅读 · 0 评论 -
插入排序和希尔排序
插入排序(Insert Sort)void InsertSort( int A[], int N ){ int i, j, key; for(i = 1; i key= A[i]; for(j = i; j >= 1; j -= 1 ){原创 2013-04-13 14:41:31 · 867 阅读 · 0 评论 -
计数排序和基数排序
计数排序(Counting Sort)前提条件:有N个介于0到MAX_ELEMENT之间的整数存于数组A中,使用计数排序后将结果存于数组B中。计数排序的时间性能上界为O(MAX_ELEMENT+N),该算法适用于MAX_ELEMENT较小的情况,例如若MAX_ELEMENT=O(N),则计数排序的性能为O(N)。#define MAX_ELEMENT 99void原创 2013-04-06 18:47:22 · 944 阅读 · 0 评论