Java全排列遞歸算法,實踐與總結(jié)

Java全排列遞歸算法,實踐與總結(jié)

長沙中公優(yōu)就業(yè)      2022-03-09 17:00:01     13

Java全排列遞歸算法,實踐與總結(jié),Java全排列算法:第一遍循環(huán):將list數(shù)組index==0的元素依次與數(shù)組的每個元素交換,從而保證index==0的位置先后出現(xiàn)n個不同元素

課程價格 請咨詢

上課時段: 授課校區(qū):

詳細(xì)介紹

Java全排列算法:

第一遍循環(huán):將list數(shù)組index==0的元素依次與數(shù)組的每個元素交換,從而保證index==0的位置先后出現(xiàn)n個不同元素之一,實現(xiàn)對index==0位置的遍歷。

第i遍循環(huán):通過交換,使index==i的元素,依次與index為[i,length-1]的元素交換。使index==i位置遍歷length-i個不同值

第k次遍歷,實質(zhì)上都是讓子列表[k,length-1]的index==0的位置依次出現(xiàn)length-k個不同的值,并在出現(xiàn)每個不同的值時,遞歸操作子列表[k+1,length-1]

public?class?Permutation?{????public?static?void?permulation(int[]?list,?int?start,?int?length)?{????????int?i;????????if?(start?==?length)?{????????????for?(i?=?0;?i?<?length;?i++)????????????????System.out.print(list[i]?+?"?");????????????System.out.println();????????}?else?{????????????for?(i?=?start;?i?<?length;?i++)?{????????????????swap(list,?start,?i);????????????????permulation(list,?start?+?1,?length);????????????????swap(list,?start,?i);????????????}????????}????}????public?static?void?swap(int[]?list,?int?start,?int?i)?{????????int?temp;????????temp?=?list[start];????????list[start]?=?list[i];????????list[i]?=?temp;????}????public?static?void?main(String[]?args)?{????????int?length?=?3;????????int?start?=?0;????????int?list[]?=?new?int[length];????????for?(int?j?=?0;?j?<?length;?j++)????????????list[j]?=?j?+?1;????????permulation(list,?start,?length);????}}

沒有注釋,其實因為我覺得注釋也不太好寫。以list[3]={1,2,3}為例。

一、先是123,然后1與1自己對換,遞歸排列23,2與2自己對換,遞歸排列3,然后3與3對換,再遞歸時滿足start==length,即越界,所以把123打印出來;

然后上一步2與2自己對換后,2與3對換,(暫時是132),遞歸到2與2對換,再遞歸滿足start==length,打印132;

二、最先一步1與1自己對換后,1與2對換,(暫時是213),遞歸排列13,1與1自己對換,遞歸排列3.3與3自己對換,然后滿足If條件打印213:

然后退一步,1與3對換,(暫時是231),遞歸到1與1自己對換,再遞歸滿足打印條件,打印231;

三、1與1、2對換后,1最后與3對換,(暫時是321),遞歸排列21,2與2對換,遞歸排列1.1與1自己對換,后來滿足打印條件打印321.2再與1對換,再遞歸到2與2自己對換,后來打印出312.

Java遞歸方法:http://www.bjpowernode.com/tutorial_java_se/1042.html

以上就是長沙中公優(yōu)就業(yè)java培訓(xùn)機(jī)構(gòu)的小編針對“Java全排列遞歸算法,實踐與總結(jié)”的內(nèi)容進(jìn)行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。

培訓(xùn)啦提醒您:交易時請核實對方資質(zhì),對于過大宣傳或承諾需謹(jǐn)慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險,謹(jǐn)防上當(dāng)。