2011年4月12日

算法导论9.2-3习题解答(寻找第i小的数)

摘要: CLRS 9.2-3 :写出RANDOMIZED-SELECT的一个迭代版本在这里,顺便实现在数组内寻找第i小的数值。#include <iostream>#include <time.h>using namespace std;//随机化分割int randomized_partition(int* a, int p, int r);int randomized_select(int* a, int p, int r, int i);int main(){ int arr[10] = {4, 34, 21, 8, 3, 10, 453, 32, 1, 400}; in 阅读全文

posted @ 2011-04-12 19:56 NULL00 阅读(1494) 评论(0) 推荐(0) 编辑

算法导论9.1-1习题解答(二叉树)

摘要: CLRS 9.1-1 :证明:在最坏情况下,利用n + [lgn] - 2此比较,即可找到n个元素中的第2小元素。(提示:同时找最小元素)算法思想:1.将数组中的元素分组,每组两个元素,然后比较每组中的两个元素得到最小值,重新得到包含原来一半元素的数组,继续重复上述过程,那么最后一个元素必然为最小值。如图所示,数组为{2, 1, 4, 3, 5}2.上述过程形成的是一个二叉树,其中叶子节点都为数组元素,非叶子节点刚好4个,这是二叉树的性质。3.然后我们来找第二小元素,第二小元素必然跟着1,首先赋值为5,然后再赋值为3, 然后赋值为2,即为所求。PS:本章讨论的元素都互异,不存在相同值(见原书) 阅读全文

posted @ 2011-04-12 17:25 NULL00 阅读(2347) 评论(2) 推荐(0) 编辑

导航