算法导论学习
文章平均质量分 74
nk_boy
这个作者很懒,什么都没留下…
展开
-
堆排序
<br />#include<iostream> #include<limits> using namespace std; void Swap(int &a,int &b) { int tmp; tmp=a; a=b; b=tmp; } //类最大堆 class Max_Heap { private: int *A; int heap_size;//堆中元素的个数 int length;//数组中元素的个数 public: Max_Heap(int n)原创 2010-09-03 22:08:00 · 135 阅读 · 1 评论 -
基数排序
<br /> 所谓基数排序,是指对数组按位(从低位到高位)进行排序,算法的核心是要求按位排序的算法是稳定的。对十进制数来说,每位的范围是0-9,因此可以使用计数排序算法对数组按位排序。设数组中的元素为d位数(即最大的位数),每一个数位可以取k(对10进制数 k=10)种可能的值,使用计数排序算法对每位进行排序,则基数排序算法时间复杂性为O(d*(n+K)).<br /> 实例代码如下:<br />#include<iostream> #include<cmath> using namespace原创 2010-09-05 11:10:00 · 130 阅读 · 0 评论 -
中位数和顺序统计学
<br />1 最大值和最小值<br />对大小为n的数组求最大值或最小值,仅需比较n-1次即可。<br />MinMum(A,n)<br />min=A[0];<br />for(i=1;i<n;i++)<br /> if(A[i]<min)<br /> min=A[i];<br />对最大值也是如此。<br />若同时取得最大值和最小值,按照上述方法,需比较2(n-1)次。<br />事实上,至多3/2n次即可同时求得最大值和最小值。成对成对的比较,对没对数先进行比较,然后另其中较大者与max原创 2010-09-05 21:28:00 · 175 阅读 · 0 评论