자바 변수가 조금 이상해요
조회수 457회
import java.util.Random;
public class Compare {
public static void main(String[] args) {
int[] arr = new int[100];
Random rand = new Random();
for(int i = 0; i < arr.length; i++) {
arr[i] = rand.nextInt(100) + 1;
}
int[] ascSortedArr = new int[100];
ascSortedArr = ascBubbleSort(arr);
int[] decSortedArr = new int[100];
decSortedArr = decBubbleSort(arr);
for(int j = 0; j < arr.length; j++) {
System.out.println(ascSortedArr[j]);
}
for(int j = 0; j < arr.length; j++) {
System.out.println(decSortedArr[j]);
}
}
public static int[] ascBubbleSort(int[] arr) {
for(int i = 0; i < arr.length; i++) {
for(int j = 0; j < arr.length -1; j++) {
int temp;
if(arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr;
}
public static int[] decBubbleSort(int[] arr) {
for(int i = 0; i < arr.length; i++) {
for(int j = 0; j < arr.length -1; j++) {
int temp;
if(arr[j] < arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr;
}
}
이게 출력이 총 2번 오름차, 내림차로 나오는데 둘 다 내림차로 나오네요.. 어디서 문제가 있는지를 잘 모르겠어요..
1 답변
-
자바의 배열은 레퍼런스로 전달됩니다. 작성하신 코드는 하나의 배열에 대해 오름차순 정렬 후 다시 내림차순 정렬하기 때문에 내림차순 결과만 출력됩니다.
다시말해 arr, ascSortedArr, decSortedArr 은 같은 배열을 바라보고 있습니다.
아래처럼 출력 순서를 바꿔보시면 의도하신대로 출력될꺼에요.
int[] ascSortedArr = new int[100]; ascSortedArr = ascBubbleSort(arr); for(int j = 0; j < arr.length; j++) { System.out.println(ascSortedArr[j]); } int[] decSortedArr = new int[100]; decSortedArr = decBubbleSort(arr); for(int j = 0; j < arr.length; j++) { System.out.println(decSortedArr[j]); }
댓글 입력