求全排列java代碼,java排序代碼完整

一個JAVA編程求助:用遞歸方法求n(n=3)個數的無重復全排列

import java.util.ArrayList;

成都創(chuàng)新互聯公司是一家專注于網站設計制作、成都網站設計與策劃設計,廣陽網站建設哪家好?成都創(chuàng)新互聯公司做網站,專注于網站建設十多年,網設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:廣陽等地區(qū)。廣陽做網站價格咨詢:18982081108

import java.util.List;

public class Test {

public static void main(String[] args) {

Test t = new Test();

t.contList();

t.getAllArray(list, 0);

}

private static ListInteger list = new ArrayList();

private void contList(){

list.add(1);

list.add(2);

list.add(3);

}

public void getAllArray(ListInteger inlist,int site){

int tempsite = site;

if(site = inlist.size()){

return;

}

Integer firstNode = inlist.get(site++);

List tempList = new ArrayList(inlist);

tempList.remove(tempsite);

for(int i = 0;i tempList.size();i++){

System.out.print(firstNode);

for(int j = i;j tempList.size()+i;j++){

if(j tempList.size()){

System.out.print(","+tempList.get(j));

}else{

System.out.print(","+tempList.get(j-tempList.size()));

}

}

System.out.println("");

}

getAllArray(inlist,site);

}

}

n=3這個運行結果是

1,2,3

1,3,2

2,1,3

2,3,1

3,1,2

3,2,1

import java.util.*;

import java.io.*;

public class Test {

public static void main(String[] args) throws Exception {

String[] array = new String[] { "1", "2", "3", "4" };

int length=array.length;

listAll(Arrays.asList(array), "",length);

}

public static void listAll(List candidate, String prefix,int length) {

if(prefix.length()==length)

System.out.println(prefix);

for (int i = 0; i candidate.size(); i++) {

List temp = new LinkedList(candidate);

listAll(temp, prefix + temp.remove(i),length);

}

}

}

JAVA 全排列算法

遞歸實現,取數字(字符串)中第i個位置的字符,然后將他和剩余的字符拼接,剩余的字符串當成有一個全排列的輸入,這樣遞歸下去,只剩一個字符時全排列就是本身。程序中使用set去除了重復的數據,如果需要保留,將set換為list接口即可。

package mytest;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.HashSet;

import java.util.Iterator;

import java.util.List;

import java.util.Set;

/*

* @date:2012-2-8

* @author:

*

* 輸入一個數字,講輸出 1到這個數字的全排列

*/

public class MyDemo2 {

private static SetString SET_STRING = new HashSetString();

private static SetLong SET_NUM = new HashSetLong();

public static void main(String[] args) {

System.out.println("begin ...... ");

testLong(234);

testString("a23");

print(SET_NUM);

print(SET_STRING);

System.out.println("end ...... ");

}

/**

* 測試數字

* @param num

*/

private static void testLong(long num){

long testNum = num;

String[] permutation;

for(long l=0; l=testNum; l++){

permutation = getAllOrder(String.valueOf(l));

for (int i = 0; i permutation.length; i++) {

SET_NUM.add(Long.valueOf(permutation[i]));

}

}

}

/**

* 測試字符串

* @param str

*/

private static void testString(String str){

String[] permutation = getAllOrder(str);

for (int i = 0; i permutation.length; i++) {

SET_STRING.add(permutation[i]);

}

}

private static void print(Set set){

System.out.println("/*****************************************************/");

int i=0;

for(Iterator it = set.iterator(); it.hasNext();){

i++;

if(i%10 == 0){

System.out.println();

}

System.out.print(it.next() + " ");

}

System.out.println();

System.out.println("/*****************************************************/");

}

/**

* 遞歸算法 全排列 去除重復

* @param str

* @return

*/

private static String[] getAllOrder(String str) {

String [] arrResult = null;

SetString set = new HashSetString();

if(str.length()1){

String result = "";

String charXInString;

String remainString;

for (int i = 0; i str.length(); i++) {

charXInString = str.charAt(i) + "";

remainString = str.substring(0, i)+ str.substring(i + 1, str.length());

for (String element : getAllOrder(remainString)) {

result = charXInString + element;

set.add(result);

}

}

arrResult = set.toArray(new String[set.size()]);

}else{

arrResult = new String[]{str};

}

return arrResult;

}

}

java怎么搞全排列

盡量用遞歸好理解一些,打個斷點

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;

list = 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);

}

}

java 全排列算法;

= =~思路什么的...用遞歸吧:

package mon_11;

import java.util.HashSet;

public class ArrangeAll {

private static HashSetString set = new HashSetString();

public static void arrangeAll(String s) {

put(new StringBuilder(s), new StringBuilder());

}

static void put(StringBuilder s1, StringBuilder s2) {

if (s1.length() == 0)set.add(s2.toString());

for (int i = 0; i s1.length(); i++) {

put(new StringBuilder(s1).deleteCharAt(i),new StringBuilder(s2).append(s1.charAt(i)));

}

}

public static void main(String[] args) {

arrangeAll("abcd");

System.out.println(set);

}

}

----

輸出:

[dcab, acdb, acbd, bcda, bdca, bdac, dbca, bacd, cabd, cdba, cdab, badc, dabc, cadb, dbac, bcad, dacb, cbda, cbad, adbc, adcb, abcd, abdc, dcba]

java全排列遞歸算法

思路:先有一個起始排列,如1234.從后面掃描,直到找到a[k],a[k]a[k+1];再從后面掃描,直到找到a[j],這里有 a[k]a[j]。交換a[k],a[j].再把a[k+1],...a[n-1]排序(從小到大),即得到了一個排列,再循環(huán)下去,直到找出所有的排序。用C語言的,參考下:

網頁標題:求全排列java代碼,java排序代碼完整
鏈接地址:http://muchs.cn/article12/pheodc.html

成都網站建設公司_創(chuàng)新互聯,為您提供網站建設、企業(yè)網站制作、ChatGPT、企業(yè)建站動態(tài)網站、全網營銷推廣

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

成都定制網站建設