字典序演算法

2021-09-24 17:38:08 字數 1118 閱讀 7243

給定乙個正整數,實現乙個方法來求出離該整數最近的大於自身的「換位數」。

從後向前檢視逆序區域,找到逆序區域的前一位,也就是數字置換的邊界

把逆序區域的前一位和逆序區域中剛剛大於它的數字交換位置

把原來的逆序區域轉為順序

//主流程,返回最近乙個大於自身的相同數字組成的整數。

public

static

int[

]findnearestnumber

(int

numbers)

//2.把逆序區域的前一位和逆序區域中剛剛大於它的數字交換位置

exchangehead

(numberscopy, index)

;//3.把原來的逆序區域轉為順序

reverse

(numberscopy, index)

;return numberscopy;

}private

static

intfindtransferpoint

(int

numbers)

}return0;

}private

static

int[

]exchangehead

(int

numbers,

int index)

}return numbers;

}private

static

int[

]reverse

(int

num,

int index)

return num;

}public

static

void

main

(string[

] args)

;for

(int i=

0; i<

10;i++)}

//輸出陣列

private

static

void

outputnumbers

(int

numbers)

system.out.

println()

;}

字典序演算法

字典序排列就是按照字典a z,1 9的順序給出字串的順序全排列,例如abc的全排列就是從abc一直排到cba。那麼給定乙個字串,怎麼找出恰好大於該字串的下乙個排列呢?我們考慮如下的步驟 1 假設字串為p1 p2 pn 我們從後往前尋找第乙個符合pj j 1條件的字元pj 也就是說,p1 p2 pj ...

字典序演算法

我們先看乙個例子。示例 1 2 3的全排列如下 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 我們這裡是通過字典序法找出來的。那麼什麼是字典序法呢?從上面的全排列也可以看出來了,從左往右依次增大,對這就是字典序法。可是如何用演算法來實現字典序法全排列呢?你主要看紅色字型部分...

字典序演算法

我們先看乙個例子。示例 1 2 3的全排列如下 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 我們這裡是通過字典序法找出來的。那麼什麼是字典序法呢?從上面的全排列也可以看出來了,從左往右依次增大,對這就是字典序法。可是如何用演算法來實現字典序法全排列呢?你主要看紅色字型部分...