Java獲得一個數(shù)組的指定長度排列組合算法示例
更新時間:2019年06月22日 09:59:00 作者:iteye_16203
這篇文章主要介紹了Java獲得一個數(shù)組的指定長度排列組合算法,結合實例形式分析了java排列組合相關數(shù)組遍歷、運算操作技巧,需要的朋友可以參考下
本文實例講述了Java獲得一個數(shù)組的指定長度排列組合算法。分享給大家供大家參考,具體如下:
package demo;
import java.util.Stack;
/**
* JAVA獲得一個數(shù)組的指定長度的排列組合。<br>
*
* @author JAVA世紀網(wǎng)(java2000.net, laozizhu.com)
*/
public class TestSequenceAll {
public static void main(String[] args) {
TestSequenceAll t = new TestSequenceAll();
Object[] arr = { 1, 2, 3 };
// 循環(huán)獲得每個長度的排列組合
for (int num = 1; num <= arr.length; num++) {
t.getSequence(arr, 0, num);
}
}
// 存儲結果的堆棧
private Stack<Object> stack = new Stack<Object>();
/**
* 獲得指定數(shù)組從指定開始的指定數(shù)量的數(shù)據(jù)組合<br>
*
* @param arr 指定的數(shù)組
* @param begin 開始位置
* @param num 獲得的數(shù)量
*/
public void getSequence(Object[] arr, int begin, int num) {
if (num == 0) {
System.out.println(stack); // 找到一個結果
} else {
// 循環(huán)每個可用的元素
for (int i = begin; i < arr.length; i++) {
// 當前位置數(shù)據(jù)放入結果堆棧
stack.push(arr[i]);
// 將當前數(shù)據(jù)與起始位置數(shù)據(jù)交換
swap(arr, begin, i);
// 從下一個位置查找其余的組合
getSequence(arr, begin + 1, num - 1);
// 交換回來
swap(arr, begin, i);
// 去除當前數(shù)據(jù)
stack.pop();
}
}
}
/**
* 交換2個數(shù)組的元素
*
* @param arr 數(shù)組
* @param from 位置1
* @param to 位置2
*/
public static void swap(Object[] arr, int from, int to) {
if (from == to) {
return;
}
Object tmp = arr[from];
arr[from] = arr[to];
arr[to] = tmp;
}
}
運行結果:
[1]
[2]
[3]
[1, 2]
[1, 3]
[2, 1]
[2, 3]
[3, 2]
[3, 1]
[1, 2, 3]
[1, 3, 2]
[2, 1, 3]
[2, 3, 1]
[3, 2, 1]
[3, 1, 2]
更多關于java算法相關內容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結構與算法教程》、《Java操作DOM節(jié)點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設計有所幫助。
相關文章
java實現(xiàn)給圖片加鋪滿的網(wǎng)格式文字水印
這篇文章主要給大家介紹了關于java實現(xiàn)給圖片加鋪滿的網(wǎng)格式文字水印的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-01-01
使用SpringBoot實現(xiàn)微服務超時重試模式的示例
這篇文章主要介紹了使用SpringBoot實現(xiàn)微服務超時重試模式的示例,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下2020-11-11

