새 배열을 만들지 않고 배열을 제 자리에서 되돌릴 수있는 방법은 무엇입니까?새 배열을 만들지 않고 문자 배열을 뒤집을 때
답변
단일 변수를 임시 버퍼로 사용하여 끊임없이 끝을 교체하십시오. 의사 코드 :
temp = a[0]
a[0] = a[size - 1]
a[size - 1] = temp
등등.
'size - 2'가 아니라'size - 1'이어야한다고 생각하십시오. – Thomas
지난 수십 년 동안 작성된 컴파일러를 사용하는 경우 XOR이거나 XOR 일 수도 있고 임시로 등록 할 수도 있습니다. –
xor 스왑 메소드를 사용하면 일시적인. 의사 코드에서, A는 [CURR]이 [CURR] XOR을 = - - A [CURR] = A [CURR]이 [CURR 크기]에 xor 는 A [CURR] = A [CURR]이 [CURR 크기]에 xor [크기 - curr] ++ curr –
메모리의 배열을 뒤집어 쓰지 마십시오. 역순으로 반복하십시오!
전달을 반복하지만 역순으로해야하는 라이브러리 함수에 배열을 전달하는 경우 그렇게하려면 메모리에서 배열을 반대로해야합니다. 그러나 경우에 따라 정확합니다. – alternative
숙제는 당신이
를 켭니다 :-) 어쨌든 원하는 언어를 지정하지 않음으로써 상대적으로 쉽게 만들었다 나만의 의사 코드를 의미이 선택의 여지가 귀하의 언어로 :
Set i1 to index of first element in array
Set i2 to index of last element in array
while i1 < i2:
Set temporary variable to element number i1
Set element number i1 to element number i2
Set element number i2 to temporary value
Add 1 to i1
Subtract 1 from i2
이상적인 방법은 변수를 추적하기 위해 종이를 사용하여 실제로 알고리즘을 실행하는 것입니다.
- 배열의 각 요소.
i1
및i2
.temporary variable
.
더 간단한 알고리즘을 사용하는 경향이 있습니다. 더 어려운 것들은 컴퓨터가 나를 위해 그 일을 할 수 있도록 디버그 문을 삽입합니다. 따라서 종이로 시작하십시오 :
i1 | i2 | tempvar | el[0] | el[1] | el[2] | el[3] | el[4] | el[5]
---+----+---------+-------+-------+-------+-------+-------+------
H e l l o !
그리고 단계별로 하나씩 단계별로 실행하고 각 열을 확인하거나 변경하십시오. 그러면 코드가 주어진 것보다 훨씬 효과가 있다는 것을 이해하게 될 것입니다.
public static int[] reverseArrayWithoutTempArray(int[] array) {
int i = 0, j = array.length - 1;
for (i = 0; i < array.length/2; i++, j--) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
return array;
}
100 % 정확함 (널 배열의 장소 확인) – Jone
public static void main(String args[]){
int j=arr.length;
for(int i=0;i<arr.length/2;i++){
int temp=arr[i];
arr[i]=arr[j-1-i];
arr[j-1-i]=temp;}
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
어떤 언어
- 1. 복사하지 않고 배열을 잘라 버리시겠습니까?
- 2. 합류하지 않고 다른 배열을 사용하여 배열을 반복하다
- 3. 겹치는 엔티티 배열을 기반으로 새 배열을 만듭니다.
- 4. Howto는 문자 배열을 구성합니다.
- 5. Perl 문자열 - 새 변수를 만들지 않고 문자 대체
- 6. 문자 배열을 통해 순열 변환
- 7. 문자 배열을 바이트 배열로 변환하고 다시 다시
- 8. Java : 문자열 배열에서 문자열의 일부를 찾고 새 배열을 만들 때
- 9. 는 foreach는하지 않고 배열을 spliting
- 10. 반복하지 않고 배열을 재구성하려면 어떻게해야합니까?
- 11. NSPredicate를 사용하여 단어 배열을 문자 배열로 필터링
- 12. 새 인스턴스를 만들지 않고 클래스를 이동하는 중
- 13. 배열을
- 14. System.IO.BinaryWriter를 사용하여 문자열과 문자 배열을 쓰는 차이점
- 15. 함수 포인터의 JavaScript 배열을 호출하지 않고 호출합니다.
- 16. 새 배열을 만들 때`new Array (number) '란 의미는 무엇입니까?
- 17. vC++에서 문자 배열을 올바르게 사용하기
- 18. C에서 다차원 문자 배열을 초기화하는 방법?
- 19. 1 차원 문자 배열을 사용하여 이미지 뒤집기
- 20. 문자 배열을 부호없는 char *로 변환 *
- 21. 문자열 대신 문자 배열을 보내려고하는 이유는 무엇입니까?
- 22. 문자 배열을 배치 용 저장소로 새로 추가
- 23. JavaScript - 4 문자 배열을 정수로 변환
- 24. 루비에서 다차원 문자 배열을 작성하는보다 우아한 방법은?
- 25. AS2 문자열의 문자 배열을 대체 하시겠습니까?
- 26. Sax 파서 문자 배열을 정수로 변환 하시겠습니까?
- 27. 배열을 반복하고 두 배열을 결합하십시오.
- 28. 오류 배열을 반복 할 때
- 29. 구조체의 배열을 반복 할 때
- 30. 배열을 객체로 사용
? 또한 참조 http://stackoverflow.com/questions/1469311/reverse-array-in-place http://stackoverflow.com/questions/585257/is-there-a-better-way-to-reverse-an -by-bytes-in-memory + 많은 다른 것들. – Dipstick