遞迴演算法 如何一步一步理解遞迴(2) 全排列

2021-08-07 20:26:12 字數 946 閱讀 1964

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

static

int total = 0;

public

static

void swap(string str, int i, int j)

public

static

void arrange(string str, int st, int len)

system.out.println();

total++;

} else

}}

package test;

public

class

permutate

public

static

void arrange(string str, int st, int len)

system.out.println();

total++;

} else }}

public

static

void main(string args) ;

arrange(str, 0, str.length);

system.out.println(total);

}}

執行結果:

a--

b--c

--a-

-c--

b--b

--a-

-c--

b--c

--a-

-c--

b--a

--c-

-a--

b--6

一步一步寫演算法(之非遞迴排序)

在上面一篇部落格當中,我們發現普通查詢和排序查詢的效能差別很大。作為乙個100萬的資料,如果使用普通的查詢方法,那麼每乙個資料查詢平均下來就要幾十萬次,那麼二分法的查詢呢,20多次就可以搞定。這中間的差別是非常明顯的。既然排序有這麼好的效果,那麼這篇部落格中,我們就對排序算做乙個總結。按照我個人的理...

一步一步寫演算法(之非遞迴排序)

在上面一篇部落格當中,我們發現普通查詢和排序查詢的效能差別很大。作為乙個100萬的資料,如果使用普通的查詢方法,那麼每乙個資料查詢平均下來就要幾十萬次,那麼二分法的查詢呢,20多次就可以搞定。這中間的差別是非常明顯的。既然排序有這麼好的效果,那麼這篇部落格中,我們就對排序算做乙個總結。按照我個人的理...

一步一步寫演算法(之遞迴和堆疊)

看過我前面部落格的朋友都清楚,函式呼叫主要依靠ebp和esp的堆疊互動來實現的。那麼遞迴呢,最主要的特色就是函式自己呼叫自己。如果乙個函式呼叫的是自己本身,那麼這個函式就是遞迴函式。我們可以看一下普通函式的呼叫怎麼樣的。試想如果函式a呼叫了函式b,函式b又呼叫了函式c,那麼在堆疊中的資料是怎麼儲存的...