사전 순서 방법은 사전 정렬 아이디어에 따라 모든 배열을 하나씩 생성하는 것입니다.
수학, 사전 또는 사전 순서 (어휘 순서, 사전 순서, 알파벳 순서 또는 사전 순서라고도 함)에서 단어는 알파벳 순서를 기반으로 알파벳순으로 배열 된 알파벳 순서의 방법입니다. 이 일반화는 주로 정렬 된 완전히 순서 대상 요소 세트 (종종 알파벳이라고 함)를 정의하는 요소의 전체 시퀀스 (종종 컴퓨터 과학에서 단어라고 함)를 정의하는 데 있습니다.
숫자 1, 2, 3 ... n의 배열에 대해, 상이한 배열의 순서는 해당 숫자의 순서를 왼쪽에서 오른쪽으로 하나씩 비교함으로써 결정된다. 예를 들어, 5 개의 숫자 중 12354 및 12345의 경우, 12345 배열은 앞면에 있고 12354 배열은 뒷면에 있습니다. 이 규정에 따르면, 5 숫자의 모든 계약 중 첫 번째는 12345이고 마지막은 54321입니다.
예를 들어, 소형에서 큰 1, 2, 3으로 구성된 모든 배열은 다음과 같습니다.
123,132,213,231,312,321
1, 2, 3, 4로 구성된 모든 배열 :
1234, 1243, 1324, 1342, 1423, 1432,
2134, 2143, 2314, 2341, 2413, 2431,
3124, 3142, 3214, 3241, 3412, 3421,
4123, 4132, 4213, 4231, 4312, 4321.
먼저, 주어진 문자 세트의 일련의 문자를 지정해야하며,이를 기준으로 각 배열은 순서대로 생성됩니다.
[예] 문자 세트 {1,2,3}, 작은 숫자는 먼저이므로 사전 순서로 생성 된 전체 배열은 123, 132, 213, 231, 312, 321입니다.
전체 순열이 주어지면 다음 순열을 생성하고 소위 다음 순열은 사전 순서가없는 다음 순열에 인접한 문자열입니다. 이를 위해서는이 제품이 가능한 한 다음 다음 접두사와 동일한 접두사를 가지야합니다. 즉, 변동은 가능한 가장 짧은 접미사로 제한됩니다.
후자의 배열과 이전 배열 사이에는 특정 관계가 있습니다. 후자의 배열의 솔루션 프로세스는 다음과 같습니다.
배열 (p) = 2763541, 사전에 의해 정렬 된 다음 배열은 무엇입니까?
2763541 (마지막 양수 순서 찾기 35)
2763541 (3 이후의 마지막 숫자 4를 찾아 3보다 큽니다)
2764531 (스위치 3, 4 위치)
2764135 (4, 4 이후의 5, 3, 1)
다음은 p [1… n]의 다음 배열에 대한 설명입니다.
i = max {j |를 찾으십시오 p [j 1] <p [j]} (마지막 양의 순서 찾기)
j = max {k |를 찾으십시오 p [i 1] <p [k]} (p [i 1]보다 큰 마지막 것을 찾으십시오)
P [1]… P [1]… P [I-2] P [J] P [I] P [I+1]… P [J-1] P [I-1] P [J+1]… P [N]
p [j] 후에 p [1]… p [i-2] p [j] p [n]… p [j+1] p [i-1] p [j-1]… p [i]
코드 구현은 다음과 같습니다.
private static int [] getpermatute (int [] in) {int [] ns = in; int base = -1; for (int i = ns.length-1; i> = 1; i-) {if (ns [i-1] <ns [i]) {base = i-1; break;}} // 마지막으로 정렬되었으며 (vase = 0)가되었다; (int i = ns.length-1; i> = base; i-) {if (ns [i]> ns [base]) {bigger = i; break;}} // system.out.println (bigger); 스왑 (ns, base, bigger); Reverse (ns, base+1, ns.length;}); {int left = i, right = j; while (왼쪽 <오른쪽) {swap (ns, 왼쪽, 오른쪽); 왼쪽 ++; 오른쪽-;}} private static void swap (int [] ns, int base, int bigger) {int temp = ns [base]; ns [base] = ns [bigger]; ns [bigger] = temp;}요약
위의 모든 것은 Java 언어 사전 분류 알고리즘 및 코드 예제의 분석에 관한 것입니다. 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구는이 사이트의 다른 관련 주제를 계속 참조 할 수 있습니다. 단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!