給定乙個正整數,實現乙個方法來求出離該整數最近的大於自身的「換位數」。
從後向前檢視逆序區域,找到逆序區域的前一位,也就是數字置換的邊界
把逆序區域的前一位和逆序區域中剛剛大於它的數字交換位置
把原來的逆序區域轉為順序
//主流程,返回最近乙個大於自身的相同數字組成的整數。
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 我們這裡是通過字典序法找出來的。那麼什麼是字典序法呢?從上面的全排列也可以看出來了,從左往右依次增大,對這就是字典序法。可是如何用演算法來實現字典序法全排列呢?你主要看紅色字型部分...