摘要: MAX-HEAPIFY(A,i)函数通过递归,从元素A[i]开始与A[i]的两个子节点比较,将二者中的较大者与A[i]数值对换,如果A[i]比两个子节点数值皆大,则不执行任何操作,并向下一级继续执行MAX-HEAPIFY,即递归调用。当最后一级执行完毕时,MAX-HEAPIFY也就结束了。MAX-HEAPIFY的作用就是在执行BUILD-MAX-HEAP(A)后,将 以A[i]为子树的堆中的最大值移动到A[i]的位置,即这个子树的根节点。BUILD-MAX-HEAP(A)一定要在MAX-HEAPIFY之前执行,BUILD-MAX-HEAP(A)的作用就是从堆的倒数第二层的最后一个元素开始到堆的 阅读全文
posted @ 2011-02-14 20:47 SunnyDay2015 阅读(297) 评论(0) 推荐(0) 编辑
摘要: #include <iostream>using namespace std;void swap(int array[] , int i , int j){ /*array[i] = array[i]+array[j]; array[j] = array[i]-array[j]; array[i] = array[i]-array[j];*/ int temp; temp = array[i]; array[i] = array[j]; array[j] = temp;}void MaxHeapify(int array[] , int i , int... 阅读全文
posted @ 2011-02-14 20:40 SunnyDay2015 阅读(245) 评论(0) 推荐(0) 编辑
摘要: #include <iostream>using namespace std;void swap(int array[] , int i , int j){ /*array[i] = array[i]+array[j]; array[j] = array[i]-array[j]; array[i] = array[i]-array[j];*/ int temp; temp = array[i]; array[i] = array[j]; array[j] = temp;}void MaxHeapify(int array[] , int i , int... 阅读全文
posted @ 2011-02-14 20:37 SunnyDay2015 阅读(342) 评论(0) 推荐(0) 编辑
摘要: #include <iostream>using namespace std;void swap(int array[] , int i , int j){ /*array[i] = array[i]+array[j]; array[j] = array[i]-array[j]; array[i] = array[i]-array[j];*/ int temp; temp = array[i]; array[i] = array[j]; array[j] = temp;}void MaxHeapify(int array[] , int i , int... 阅读全文
posted @ 2011-02-14 20:37 SunnyDay2015 阅读(700) 评论(0) 推荐(0) 编辑
摘要: MAX-HEAPIFY(A,i)函数通过递归,从元素A[i]开始与A[i]的两个子节点比较,将二者中的较大者与A[i]数值对换,如果A[i]比两个子节点数值皆大,则不执行任何操作,并向下一级继续执行MAX-HEAPIFY,即递归调用。当最后一级执行完毕时,MAX-HEAPIFY也就结束了。MAX-HEAPIFY的作用就是在执行BUILD-MAX-HEAP(A)后,将 以A[i]为子树的堆中的最大值移动到A[i]的位置,即这个子树的根节点。BUILD-MAX-HEAP(A)一定要在MAX-HEAPIFY之前执行,BUILD-MAX-HEAP(A)的作用就是从堆的倒数第二层的最后一个元素开始到堆的 阅读全文
posted @ 2011-02-14 14:00 SunnyDay2015 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 有随机排列应聘者的步骤,则是随机算法(random algorithm),没有,则是概率分析(probability analysis)。实现随机排列的两种算法:PREMUTE-BY-SORTING(A)和RANDOM-IN-PLACE。PREMUTE-BY-SORTING算法视为每一个应聘者产生一个随机数序列,用来衡量优先级。所产生的随机数序列不出现重复的概率不小于(1-1/n),不过任然可能出现重复。RANDOM-IN-PLACE则不会有这样的问题。The birthday paradox: 用概率来推导,要注意1+x<=e^x这个不等式的作用。 在用随机变量计算概率时,最后算出数学 阅读全文
posted @ 2011-02-14 13:15 SunnyDay2015 阅读(537) 评论(0) 推荐(0) 编辑
摘要: #include <iostream>#include <cstdlib>#include <time.h>using namespace std;int random(int a , int b){ int p,m=1; //m用来保存2^p for(p=0 ; m-1<b-a ; p++) //p是二进制位数 { m *= 2; //再用m保存十进制的值 } m = rand()%2; for(int i=0 ; i<p-1 ; i++) { m = m*2+rand()%2; } if(m > b-a) { return random 阅读全文
posted @ 2011-02-14 11:25 SunnyDay2015 阅读(167) 评论(0) 推荐(0) 编辑