johnson-trotter演算法描述
演算法 johnsontrotter(n)
//實現用來生成排序的 johnson-trotter 演算法
//輸入:正整數n(代表序列1,2,···,n)
//輸出:的全排列
將第乙個全排列初始化為
while存在乙個移動元素do
求最大的移動元素 k
把 k 和它箭頭指向的相鄰元素互換
調轉所有大於 k 的元素的方向
將新排列新增到排列中
以 n=3 為例
下面我將貼出johnson-trotter演算法的j**a**
1**執行結果如下:(帶有元素方向)package
jt;2
3import
j**a.util.scanner;45
public
class
johnson_trotter 18}
19//
右邊20
else25}
26}27return
k;28}29
//元素和方向的交換
30public
static
int swap2(int array, boolean f, int i, int
j) 39
//調轉方向
40public
static
boolean reverseid(int array, int k, boolean
f) 45}
46return
f;47}48
49public
static
void jt(int
n) 61
//輸出第乙個初始化的排列,此排列不會自動生成
62for(int i = 0; i < n; i++)
66system.out.println();
67//
初始化k,獲取第乙個可移動的最大元素
68 k =maxk(n, idata, flag);
69//
迴圈直到沒有可移動的元素
70while(k != -1)
78//
可向左移動
79else
83 flag = reverseid(idata, k, flag);//
調轉所有大於k的元素的方向
84//
輸出當前的乙個排列
85for(int i = 0; i < n; i++)
89system.out.println();
90 k = maxk(n, idata, flag);//
獲取下乙個k91}
92}9394
public
static
void
main(string args)
100 }
please put in n :4
1false2false3false4false
1false2false4false3false
1false4false2false3false
4false1false2false3false
4true1false3false2false
1false4true3false2false
1false3false4true2false
1false3false2false4true
3false1false2false4false
3false1false4false2false
3false4false1false2false
4false3false1false2false
4true3true2false1false
3true4true2false1false
3true2false4true1false
3true2false1false4true
2false3true1false4false
2false3true4false1false
2false4false3true1false
4false2false3true1false
4true2false1false3true
2false4true1false3true
2false1false4true3true
2false1false3true4true
process finished with exit code 0
求全排列演算法簡單的實現
求全排列演算法實現 一 遞迴實現 假如是乙個陣列,無重複元素的全排列,其簡單的遞迴實現演算法思想如下 假如 allsort a b c 分治思想化為a allsort b c b allsort a c c allsort a b 遞迴一層後計算第二層時 如allsort b c 時,化為b all...
乙個求全排列的演算法
全排列是將一組數按一定順序進行排列,如果這組數有n個,那麼全排列數為n 個。現以為例說明如何編寫全排列的遞迴演算法。1 首先看最後兩個數 4,5。它們的全排列為4 5和5 4,即以4開頭的5的全排列和以5開頭的4的全排列。由於乙個數的全排列就是其本身,從而得到以上結果。2 再看後三個數3,4,5。它...
2011 4 15 快排演算法,堆排演算法
template int get pivot index value type array,int start,int end value type pivot array start while start end while startpivot end array start array en...