JAVA實現全排列演算法

來源:互聯網
上載者:User

時間過得很快,不知多久沒寫些東西了,隨著工齡的變長,每天寫程式的時間也漸漸減少了,但技術在我的工作和生活中還是佔著重要的地位,今天心情不錯,泡泡論壇,寫寫代碼,溫故知新。原創代碼,如有錯誤請拍磚。

回顧高中數學課本:

從n個不同元素中任取m(m≤n)個元素,按照一定的順序排列起來,叫做從n個不同元素中取出m個元素的一個排列。當m=n時所有的排列情況叫全排列。

 package com.syj.csdn;</p><p>import java.util.ArrayList;<br />import java.util.Arrays;<br />import java.util.List;</p><p>/**<br /> * <p><br /> * Title:全排列演算法<br /> * </p><br /> *<br /> * <p><br /> * Copyright: http://blog.csdn.net/sunyujia/<br /> * </p><br /> *<br /> * @author 孫鈺佳<br /> * @main sunyujia@yahoo.cn<br /> * @date 2009-04-25 23:57:23 PM<br /> */<br />public class FullSort {<br />//將NUM設定為待排列數組的長度即實現全排列<br />private static int NUM = 3;</p><p>/**<br /> * 遞迴演算法:將資料分為兩部分,遞迴將資料從左側移右側實現全排列<br /> *<br /> * @param datas<br /> * @param target<br /> */<br />private static void sort(List datas, List target) {<br />if (target.size() == NUM) {<br />for (Object obj : target)<br />System.out.print(obj);<br />System.out.println();<br />return;<br />}<br />for (int i = 0; i < datas.size(); i++) {<br />List newDatas = new ArrayList(datas);<br />List newTarget = new ArrayList(target);<br />newTarget.add(newDatas.get(i));<br />newDatas.remove(i);<br />sort(newDatas, newTarget);<br />}<br />}</p><p>public static void main(String[] args) {<br />String[] datas = new String[] { "a", "b", "c", "d" };<br />sort(Arrays.asList(datas), new ArrayList());<br />}</p><p>}<br /> 

結果:

abc
abd
acb
acd
adb
adc
bac
bad
bca
bcd
bda
bdc
cab
cad
cba
cbd
cda
cdb
dab
dac
dba
dbc
dca
dcb

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.