정수 배열에 덩어리를 섞어 쓰려고하는데 지금까지 거의 성공하지 못했습니다.정수의 정수 배열을 셔플 링
는 난
int[] chunks = {2, 3, 10, 3};
int 치의 어레이는 0과 같은 시작
셔플하고자하는 int 각 청크 17
array = new int[18];
for(int i = 0; i < 18; i++){
array[i] = i;
}
0 내지 18 int 배열 및 배열을 가질 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 2의 청크 배열의 첫 번째 요소가 선택되면 처음 2 개 배열 요소 0과 1이 선택됩니다. 1이 배열의 끝으로 이동하고 0이옵니다.
지금 순서는 둘째를 들어 2,3,4,5,6,7,8,9,10111213141516170,1
입니다 엘리먼트는 청크 배열의 3을 가지므로 2,3,4가 선택되고 0과 1의 최상위에 놓입니다.
이제는 5,6,7,8,9, int 치의 배열이 완전히 덩어리
배열의 모두와 함께 단행 될 때까지 10111213141516172340,1
계속된다 청크로 완전히 섞인 것은 15,16,17,5,6,7,8,9,10,11,1입니다. 2,13,14,2,3,4,0,1
연구
내가 프로그래밍을 시도하는 방법이 지금까지
for(int i = 0; i < chunks[0] i++) {
int first = array[0];
System.arraycopy(array, 1, array, 0, array.length-1);
array[array.length - 1] = first;
}
업데이트
이것은로왔다 지금 작업 중이며 다음 결과를 얻고 있습니다. 10, 11, 12, 13, 14, 15, 3, 4, 5, 6, 7, 8, 9, 1, 1, 1, 1, 1 대신에 15,16,17,5,6,7,8,9,10111213142340,1
int[] array2 = array.clone();
int temp = array2[0];
int chunkIndex = 0;
int count = 0;
int chunkCount = 0;
//Loops 4 times
for(int i = 0; i < chunks.length; i++) {
//Loops as many times for the chunk element
while(chunks[i] > count) {
for(int k = 1; k < array2.length; k++) {
//Move all the elements back
array2[k-1] = array2[k];
}
chunkIndex = array2.length-1 - chunkCount;
array2[chunkIndex] = temp;
temp = array2[0];
count++;
}
//Increment the limit
chunkCount += chunks[i];
//System.out.println(chunkCount);
}
어떤 도움을 주시면 감사하겠습니다. 또한 알려 주신 점이 있으면 알려주십시오.
감사합니다.
지금까지 시도한 코드를 알려 주시면 도움이 될 수 있습니다. –
'for' 루프의 문법 에러에 의해서조차도 이것은'int'에'Array'를 할당하고자하는 마지막 라인 때문에 컴파일되지 않습니다 ('array [...]'는'int'입니다)) –
네 말이 맞아, 그건 내 실수 야. 배열보다는 처음에 넣는 것을 의미합니다. – user221