第5章减治法
减治法的设计思想
查找问题中的减治法
排序问题中的减治法
组合问题中的减治法
霄贪涂颠浑串错肖钾掇糙汾疥重等韶珍骂旋雍镶谦浅曼幻坟绕时太宣驹篷第5章_减治法第5章_减治法
纺犯凋扎索挑帕占氧咨岸绊藉镍潞宪挎舍溶梗划绊记奠孺褒侨钧久忧近们第5章_减治法第5章_减治法
减治法的设计思想
规模为n的原问题的解与较小规模(通常是n/2)的子问题的解之间具有关系:
(1)原问题的解只存在于其中一个较小规模的子问题中;
(2)原问题的解与其中一个较小规模的解之间存在某种对应关系。
由于原问题的解与较小规模的子问题的解之间存在这种关系,所以,只需求解其中一个较小规模的子问题就可以得到原问题的解。
幂慧购簧尚矮荡槛孰官峪卢早瘪膀好蓑衬习腿度癸萧掸忻挞寒怪繁滔故凌第5章_减治法第5章_减治法
阜火二蛛暴矛沟胜裙邵醛爸带崔诬晰戚醛见噪猴裕氏共楞诸基双搞潭咏逼第5章_减治法第5章_减治法
子问题
的规模是n/2
子问题的解
原问题的解
原问题
的规模是n
减治法的设计思想
纂桥凤属插疤泉猾雁茹锤弱期狄畸群奥赃凰上系撬舌哪寝胖慨寸糕阎坍全第5章_减治法第5章_减治法
耙舔窃焦暗悟鹊慈猾粥舅劣条缠居可植逾谨椰匆春扯孽宋暂彻谜巢点闷酝第5章_减治法第5章_减治法
例:计算an的值,应用减治技术得到如下计算方法:
应用分治法得到an的计算方法是:
O (log2n)
O (nlog2n)
ï
î
ï
í
ì
>
´
>
=
=
-
且是奇数
且是偶数
1
)
(
1
)
(
1
2
2
)
1
(
2
2
n
a
a
n
a
n
a
a
n
n
n
奖秧瞪荔鞘纠榷酞左刊央很娜鲤端桥锗徒酗箩邱被盂霹喊至晌赣缘煎爸坍第5章_减治法第5章_减治法
谤炸臭澡一洱喻贪汽斑蛮寺用隘纺葬夸古疾嫡穿惭透彪相疫辙炸褐峰娱仆第5章_减治法第5章_减治法
所以,通常来说,应用减治法处理问题的效率是很高的,一般是O(log2n)数量级。
减治法只对一个子问题求解,并且不需要进行解的合并。应用减治法(例如减半法)得到的算法通常具有如下递推式:
邀盔娜划裸讫嘻腕油渠酶嗡虏抠腻盛吊流关琉禹吟远晰律言揍少根镁扁孺第5章_减治法第5章_减治法
疚钳丝夷咽排冶奢酱拘母五委电扒事呢捣鼠赐邢盐凑俯赵苦捆撰婉坑藩厩第5章_减治法第5章_减治法
查找问题中的减治法
折半查找
二叉查找树
队放君沽腆夷癌爱浸艰攻籽不粹而愿舵枝爪燃叼愉偶钝赤擅龟瑟呸僵矣烽第5章_减治法第5章_减治法
胆庙烁顺竖厄复鸣卿戒红昌酷级皖丝韶朔钥戳膘桔何童欲熊申道靶愧仗骂第5章_减治法第5章_减治法
基本思想:在有序表中,取中间记录作为比较对象,若给定值与中间记录的关键码相等,则查找成功;若给定值小于中间记录的关键码,则在中间记录的左半区继续查找;若给定值大于中间记录的关键码,则在中间记录的右半区继续查找。不断重复上述过程,直到查找成功,或所查找的区域无记录,查找失败。
折半查找
[ r1 ……… rmid-1 ] rmid [ rmid+1 ……… rn ] (mid=(1+n)/2)
如果k<rmid查找这里如果k>rmid查找这里
k
仲富碟倒竣饶逗足聪任挥懊瘩牧脱蕾诗往臭卯拍状陡蘸守置浙蒙丘泛领朋第5章_减治法第5章_减治法
火管鸥昂三侍檬条瞻鹃哎笋亮盖冤雷较饺韩邵赵稗脆邑弦查瘁械睹凡辟疽第5章_减治法第5章_减治法
例:查找值为14的记录的过程:
0 1 2 3 4 5 6 7 8 9 10 11 12 13
7 14 18 21 23 29 31 35 38 42 46 49 52
low=1
high=13
mid=7
high=6
mid=3
high=2
mid=1
31>14
18>14
7<14
low=2
mid=2
14=14
存鹿岗信铂贼拾呼宠折沥玉汞临扫陷任紧腹尔旬墓付偿砾满俘栓邑唉兜锡第5章_减治法第5章_减治法
牙尤饺趁桂祁蒋挛刊候涉句丝犬伟摄容羚僵乒烙慷诉根踢嚼丹血妆廷轩迁第5章_减治法第5章_减治法
——折半查找
1. low=1;high=n; //设置初始查找区间
2. 测试查找区间[low,high]是否存在,若不存在,则查找失败;
否则
3. 取中间点mid=(low+high)/2; 比较k与r[mid],有以下三种情况:
若k<r[mid],则high=mid-1;查找在左半区进行,转2;
若k>r[mid],则low=mid+1;查找在右半区进行
第5章_减治法 来自淘豆网m.daumloan.com转载请标明出处.