临汾山东漯河饰品美体美文
投稿投诉
美文创意
爱情通信
用品婚姻
爱好看病
美体软件
影音星座
瑜伽周边
星座办公
饰品塑形
搞笑减肥
幼儿两性
智家潮品
漯河衢州
兴义眉山
桂林阳泉
玉溪简阳
山东遂宁
永城新余
梧州洛阳
泸州温州
临汾清远
营口常熟
浙江大连
桐乡宜昌

程序员都会的五大算法之分治算法,恶补

8月4日 观潮阁投稿
  一、算法概述
  分治法可以通俗的解释为:把一片领土分解,分解为若干块小部分,然后一块块地占领征服,被分解的可以是不同的政治派别或是其他什么,然后让他们彼此异化。二、分治策略的基本思想
  简单来说,分治算法就是分而治之,即就是讲一个规模很大很复杂的问题分成若干份相同或相似的更小的子问题,直到最后可以简单的直接求解,将所有子问题的解合并即得到原问题的解。
  此处,需要注意:子问题与原问题的性质相同子问题必须可以独立求解递归停止时,子问题必须能够直接求解三、时间复杂性
  在分治算法中,假设原问题总规模为n,我们假设分解和合并所用时间为C(n)和D(n),假设W(x)为处理一个规模为x的问题所用的时间。每一个子问题是原问题规模的1a。
  如果原问题规模最小子问题的规模,既可以直接求解,那么其时间复杂度是一个常数。否则,W(n)aW(na)C(n)D(n);四、分治精髓
  分治法的精髓:分将问题分解为规模更小的子问题;治将这些规模更小的子问题逐个击破;合将已解决的子问题合并,最终得出母问题的解;五、经典例子:二分归并排序汉诺塔5。1二分归并排序
  设计思想:
  1、将规模为n的原问题划分为规模为n2的子问题;2、继续划分,划分至规模为n4的,继续一直到规模为1,可以直接求解,这块分治就结束了;3、从规模1到n2依次陆续归并排好序的子数组,直到原始数组。
  伪代(pseudocode):
  算法MergeSort(A,p,r)
  输入:数组A〔p。。。。。。r〕
  输出:元素按从小到大排序的数组A1。ifpr2。thenq(pr)2问题规模划分3。MergeSort(A,p,q)子问题14。MergeSort(A,q1,r)子问题25。Merge(A,p,q,r)综合解
  程序代码实现(Java实现):publicstaticvoidmergeSort(int〔〕nums,intbegin,intend){intlengthendbegin1;if(length1){}分intmid(beginend)2;mergeSort(nums,begin,mid);mergeSort(nums,mid1,end);治merge(nums,begin,mid,end);}publicstaticvoidmerge(int〔〕nums,intbegin,intmid,inrend){if(midend){}intlengthendbegin1;int〔〕tempnewint〔length〕;intk0;intjmid1;while(imidjend){if(num〔i〕num〔j〕){temp〔k〕num〔i〕;i;}else{temp〔k〕num〔j〕;j;}k;}传进来前部分已经排完序if(imid){while(jend){temp〔k〕nums〔j〕;j;k;}}if(jend){while(imid){temp〔k〕num〔i〕;i;k}}重新存进原数组for(intm0;m){num〔beginm〕temp〔m〕;}}
  图解:
  时间复杂度分析:
  假设原问题规模为n,二分归并排序最坏情况:W(n)2W(n2)n1其中子问题最小规模为1,W(1)1;
  W(n)nlognn1时间复杂度为O(nlogn)5。2汉诺塔
  游戏介绍:
  在汉诺塔游戏中,有三个塔座:A、B、C。几个大小各不相同,从小到大一次编号的圆盘,每个圆盘中间有一个小孔。最初,所有的圆盘都在A塔座上,其中最大的圆盘在最下面,然后是第二大,以此类推。
  汉诺塔示意
  该游戏的目的是将所有的圆盘从A塔移到B塔;C塔用来放置临时圆盘,游戏的规则如下:一次只能移动一个圆盘任何时候都不能将一个较大的圆盘压在较小的圆盘上面。除了第二条限制,任何塔座的最上面的圆盘都可以移动到其他塔座上。
  设计思想:始终将较小的盘当做是一个整体
  游戏完成过程:
  在上述图中:我们将盘子由小到大分别记为1,2,3,4,5。
  先将1挪到B,2挪到C,再将1从B挪到C,此时A上有3,4,5,B为空,C上有1,2。
  再将3挪到B,C上的1也挪到A,C上的2挪到B,A上的1再挪到B,此时A上有45,B上有123,C为空
  再将4挪到C,B上的1挪到A,B上的2移到C上,A上的1挪到C上,B上的3挪到A上,C上面的1挪到B上,有1234
  最后将
  伪码(pesudocode):
  算法Hanoi(A,C,n)n个盘子从A到C1。ifn1thenmove(A,C)2。elseHanoi(A,B,n1)3。move(A,C)4。Hanoi(B,C,n1)设n个盘子的移动次数为T(n)T(n)2T(n1)1T(1)1
  程序:publicstaticvoidsolve(intn){hanoi(n,A,B,C);}privatestaticvoidhanoi(intn,Stringa,Stringb,Stringc){if(n1){move(n,a,c);}else{hanoi(n1,a,c,b);将前n1个圆盘从a挪到c,借助bmove(n,a,c);将第n个直接移到chanoi(n1,b,a,c);将前n1个圆盘从b挪到c,借助啊}}privatestaticvoidmove(intn,Stringi,Stringj){Systtem。out。println(第n个盘,从i塔移动到j塔);}
  时间复杂度分析:
  hanoi塔游戏的递推公式为T(n)2T(n1)1,时间复杂度为O(2n)六、分治法联系(C语言)6。1求一组数据中最大的两个数和最小的两个数
  输入输出实例:10代表10个数13579108642max110max29min11min22
  代码实现:includestdio。hvoidmaxtwo(int〔〕,int,int,int,int);voidmintwo(int〔〕,int,int,int,int);intmain(){intnum,i;scanf(d,num);inta〔num〕;for(i0;i)scanf(d,a〔i〕);Beginintmax1,max2,min1,min2;maxtwo(a,0,num1,max1,max2);printf(max1dmax2d,max1,max2);mintwo(a,0,num1,min1,min2);printf(min1dmin2d,min1,min2);End}voidmaxtwo(inta〔〕,inti,intj,intmax1,intmax2){intlmax1,lmax2,rmax1,rmax2;if(ij){max1a〔i〕;max2a〔i〕;}elseif(ij2){if(a〔i〕a〔i1〕a〔i1〕a〔i2〕){max1a〔i〕;max2a〔i1〕;}elseif(a〔i〕a〔i2〕a〔i2〕a〔i1〕){max1a〔i〕;max2a〔i2〕;}elseif(a〔i1〕a〔i〕a〔i〕a〔i2〕){max1a〔i1〕;max2a〔i〕;}elseif(a〔i1〕a〔i2〕a〔i2〕a〔i〕){max1a〔i1〕;max2a〔i2〕;}elseif(a〔i2〕a〔i〕a〔i〕a〔i1〕){max1a〔i2〕;max2a〔i〕;}else{max1a〔i2〕;max2a〔i1〕;}}else{mid(ij)2;maxtwo(a,i,mid,lmax1,lmax2);maxtwo(a,mid1,j,rmax1,rmax2);if(lmax1rmax1){max1lmax1;if(lmax2rmax2){max2lmax2;}else{max2rmax1;}}else{max1rmax1;if(rmax2lmax2){max2rmax2;}else{max2lmax1;}}}}voidmintwo(inta〔〕,inti,intj,intmin1,intmin2){intlmin1,lmin2,rmin1,rmin2;if(ij){min1a〔i〕;min2a〔i〕;}elseif(ij2){if(a〔i〕a〔i1〕a〔i1〕a〔i2〕){min1a〔i〕;min2a〔i1〕;}elseif(a〔i〕a〔i2〕a〔i2〕a〔i1〕){min1a〔i〕;min2a〔i2〕;}elseif(a〔i1〕a〔i〕a〔i〕a〔i2〕){min1a〔i1〕;min2a〔i〕;}elseif(a〔i1〕a〔i2〕a〔i2〕a〔i〕){min1a〔i1〕;min2a〔i2〕;}elseif(a〔i2〕a〔i〕a〔i〕a〔i1〕){min1a〔i2〕;min2a〔i〕;}else{min1a〔i2〕;min2a〔i1〕;}}else{mid(ij)2;mintwo(a,i,mid,lmin1,lmin2);mintwo(a,mid1,j,rmin1,rmin2);if(lmin1rmin1){min1lmin1;if(lmin2rmin2){min2lmin2;}else{min2rmin1;}}else{min1rmin1;if(rmin2lmin2){min2rmin2;}else{min2lmin1;}}}}6。2分治法求一组数据的和
  输入输出示例:8代表8个数18381687277431100分治法求出数组元素的和为:229
  代码实现:includestdio。hBeginintcalculatesum(int〔〕,int,int);intmain(){inti,num,scanf(d,num);inta〔num〕;for(i0;i){scanf(d,a〔i〕);}sumcalculatesum(a,0,num1);printf(分治法求出数组元素的和为:d,sum);}Endintcalculatesum(inta〔〕,inti,intj){intmid,leftsum,if(ij){returna〔i〕;}elseif(j11){returna〔i〕a〔j〕;}else{mid(ij)2;leftsumcalculatesum(a,i,mid);rightsumcalculatesum(a,mid1,j);}}6。3求一组数据中第k小的数
  输入输出示例:105代表10个数据,求第5个小的元素34955067738138101170第5小的元素是10
  代码实现:includestdio。hdefineArrLen20voidmergeSort(int〔〕,int,int);voidmerge(int〔〕,int,int,int);intmain(){inti,num,k;scanf(dd,num,k);inta〔num〕;for(i0;i){scanf(d,a〔i〕);}mergeSort(a,0,num1);printf(第d小的元素是d,k,a〔k1〕);return0;}voidmerge(intarr〔〕,intstart,intmid,intend){intresult〔ArrLen〕;intk0;intjmid1;while(imidjend){if(arr〔i〕arr〔j〕){result〔k〕arr〔i〕;}else{result〔k〕arr〔j〕;}}if(imid1){while(jend)result〔k〕arr〔j〕;}if(jend1){while(imid)result〔k〕arr〔i〕;}for(j0,i,j){arr〔i〕result〔j〕;}}voidmergeSort(intarr〔〕,intstart,intend){if(startend)intmid(startend)2;mergeSort(arr,start,mid);mergeSort(arr,mid1,end);merge(arr,start,mid,end);}
投诉 评论

这一次!Win7将彻底退出历史舞台,付费也不行Win7系统一直是大家心目中非常经典的系统!即使,它早就在2020年就停止了支持,依旧有很多朋友使用。确实,毕竟win7系统真的是出了名的稳定、速度快,加上它占用内……传奇落幕,致敬朋克教母西太后在2022年结束之前,时尚界又送别了一位传奇大师。12月29日晚,朋克教母VivienneWestwood,在伦敦家中于家人陪伴中安详离世,享年8……解放前的成都原来还有这么雄伟壮观城墙,那时候通惠门还在你所看到的这组照片是解放前前的成都,照片基本由黑白照片后期修复,看到此景,挺让人震撼,原来解放前的成都还有那么雄伟壮观城墙!我们从照片中可以看得出成都的城墙非常高大巍峨。……程序员都会的五大算法之分治算法,恶补一、算法概述分治法可以通俗的解释为:把一片领土分解,分解为若干块小部分,然后一块块地占领征服,被分解的可以是不同的政治派别或是其他什么,然后让他们彼此异化。二、分治策略的……专访特斯拉公司副总裁陶琳中国市场究竟魅力何在?中新网9月10日电(中新财经张尼葛成)2022年8月,上海超级工厂第100万辆中国制造特斯拉正式下线,距离这座工厂正式开工仅仅过去三年多的时间。作为第一家进入中国的外商独……秋在云端,也在我心上春去秋来,时光如水,岁月如流,一寸一寸涌动,滑过季节的眉睫,一帘秋水悠悠,盈盈脉脉,望穿万里卷舒的云涯。明媚的秋阳,透过色彩斑斓的枝桠,皎洁的秋月,目送一叶扁舟泊在枫桥花汐之中……五大卫视别争了,跨年晚会没新意,央视才是真正的收视王者五大卫视为了办好跨年晚会,可谓使出了浑身解数。但万变不离其宗,它们全都在用明星战术。江苏卫视请来李宇春、王俊凯、王源,东方卫视就请来王一博、张艺兴、任嘉伦,湖南卫视有杨紫……人生如姜(七十一)头条创作挑战赛姚兰正想说什么,老黄抬手压住她的手,制止了她,在男女感情上,我的确没什么经验,可我毕竟在生意场上混了那么多年,人心,还是能看懂一些的,我也没怪你,我们是周瑜……世外桃源,田园风光,人间美景,梦中家乡山清水秀,田地整齐,木屋篱笆,鸡犬相闻,这里可曾是陶渊明笔下的世外桃源?这里可曾是你我梦里的家园?远山朦胧,雾气弥漫,房屋农舍,农人耕作正忙。如诗如画的风景,……交易詹姆斯?禅师重返湖人最新转会流言魔术师约翰逊发声了本赛季湖人的表现令所有球迷感到失望,拥有詹姆斯丶浓眉丶威少三巨头志在夺冠的他们常规赛仅仅取得西部第11位的位置,甚至连附加赛都没能进去。在常规赛结束之后,关于这支球队的未来也充……84透光率如同玻璃!JDI公布世界最透明液晶屏一块屏幕能够有多透明?20日,日本JDI公司展示了其最新的透明显示屏产品,号称是世界最透明液晶屏,并表示将参与明年1月得CES2023。据悉,这款名叫Rlclear……国羽遭遇滑铁卢!法国赛几乎全军覆没,面临0冠收官,教练组头大2022年法国羽毛球公开赛激战正酣。与上一站丹麦公开赛相比,中国队在本站比赛成绩急转直下。仅混双头号组合郑思维和黄雅琼以及女单的何冰娇晋级四强,男单、男双和女双全军覆没。四分之……
国庆去这里,绝不会错!避开人潮,藏地的斑斓秋色美得过分了越是短暂的时令之美,越是极致绚烂,越是弥足珍贵这就是一场赏秋旅行的意义。一年之中最浓郁斑斓的秋色在这时节,最舒适凉爽的气候也正在此时。秋天的自然风景,就像一个脾气爽朗温和……我国存钱最安全的5大银行出炉永远不会倒闭!值得我们信赖大家好,我是小欣。有句话常说:钱乃身外之物,但你也这么觉得吗?只要我们还活着,金钱作为我们的生活的物质保障和经济基础,随时随刻都需要它,没有钱我们就难以生存。但是有了钱,……孩子总挑食个子长不高,宝妈只用一个笨方法,孩子顿顿都吃光孩子总挑食个子长不高宝妈只用一个笨方法,孩子顿顿都吃光随着时代的进步和经济的发展,温饱问题已经得到彻底有效的解决,现在的人更多的开始注重营养搭配。尤其是儿童,……夏末秋初,养肺要趁早,中医专家教你三招防秋燥俗话说春养肝,夏养心,秋养肺,冬养肾。夏末秋初正是天气由热转凉的阶段早晚温差较大,秋天气候干燥人体呼吸系统容易受到侵犯这时最要注意养肺今天我……六世达赖的自述白天是宫中最大的王,晚上是街头最美的情郎世间安得双全法,不负如来不负卿,几乎无人在看到这句诗时会不动容,或许,世间再难有诗句比它凄美人生最苦不过不能两全,无论作何选择,爱情始终都是奢望。写出这一诗句的仓央嘉措,……辟谣!吃牛肉的这些常见问题,不能乱信牛肉适合每天吃吗?A:当然适合!一份3盎司的牛肉可提供10多种必需营养素,包括蛋白质、铁、锌、维生素B12和B6。一份牛肉平均含有约170卡路里的蛋白质,而一份瘦牛肉则只……孩子能吃能喝,就是消瘦不长个?警惕食物不耐受!科普指导:深圳市中医院营养科宋晓莉俗话说民以食为天食物就是为人体提供营养的但对于8岁的妙妙来说能吃能喝并没有让她健康发育甚至身体还出现了问题……国乒女队全军覆没,无一人进四强,国乒未来堪忧国际乒联WTT哈萨克斯坦公开赛正在如火如荼进行中,虽然国乒的主力阵容没有出战,但这样的赛事以往只要国乒派出队伍就可以拿冠军,就算是国乒二队甚至是省队也会大概率夺冠,尤其是女队,……不能让好胜者在自己面前再强势下去几个老同事聚餐,说起某件事争得脸红脖子粗,差点儿掀翻桌子,这样的情况你遇到过吗?我有几个过去的同事,后来是朋友,彼此十分了解,现在退休了不在一个地方生活,但常有来往。这几……早期教育,做好以下几件事,培养出有大局观的孩子导读:人和人的格局不同,看待问题的角度和层面有差异,最终结果当然也不相同。在竞争激烈的时代,每一位家长都重视教育,文化知识固然很重要,然而在同等条件下人的大局观成了竞争优……纯电动轿跑时代来了,合创A06仅3。7秒破百,18万起,能脱在纯电动轿跑车市场中,特斯拉Model3确实能算领先者,得到了不少消费者的认可,在国内外都拥有较高的销量。与此同时,随着自主汽车品牌的造车技术不断突破,很多自主车企在新能源领域……甩刘威当小三呛原配患脑瘤,古典第一美如今怎么样了?又一部爆款剧要来了?前几天,陈飞宇和张婧仪主演的《打火机与公主裙》,发布了首支预告片。俊男美女站在一起的画面特别赏心悦目,两人的cp感也很足,几乎每一帧都在冒粉红泡……
友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找