算法
文章平均质量分 76
moonbird2009
这个作者很懒,什么都没留下…
展开
-
快速排序
快速排序:快速排序是一种原地排序,它是将原数组从顶向下分,每次都将一个元素放置在数组的正确位置。 Partition(A,p,r) -1- x -2- i -3- for j -4- if(A[j] -5- then i -6- exchange A[i]A[j] -7- exch原创 2011-10-24 23:42:10 · 257 阅读 · 0 评论 -
计数排序
计数排序是一个很特殊的排序方法,它不同于我们之前提到的堆排序和快速排序,计数排序所要进行排序的队列是非常特殊的,他的取值范围是确定的,介于[0,max]之间,而且他的运行时间仅为当k=O(n)时,为O(n)(同阶=)。当然一点需要声明的是,然后他的运行时间很短,但是带来的却是空间上的大幅度增加。 Count_Sort(A,B,k) -1- for i -2- C[i]原创 2011-10-26 00:46:46 · 306 阅读 · 0 评论 -
一般选择问题
一般选择问题也就是从一个数组中随机选出一个第i小的元素,这比一般的找到最小值和最大值也就难多了,我们在快速排序的每次为一个元素找到一个合适的位置,就像快速排序中的Partition中所做的那样。 Randomized_Select(A,p,r,i) -1- if p==r -2- return A[p]; -3- q←Random_Partition(A,p,r);原创 2011-10-28 21:46:23 · 493 阅读 · 0 评论 -
堆排序
1.什么是堆,堆就是一个完全二叉树,一个数组就可以表示成一个堆,对于下标为i的数组元素来说,PARENT(i)=[i/2](去下整),LEFT(i)=2*i,RIGHT(i)=2*i+1;这样的话就可以把一个数组表示成一个完全二叉树。 对于一个堆(也就是完全二叉树)来说,高度定义就是从根节点到最下层叶子节点所经过的中间边的数量。 1°那么对于一个数目为n的堆来说,他的高度也就是 [lg(n)]原创 2011-10-19 22:57:16 · 340 阅读 · 0 评论