자바 변수가 조금 이상해요

조회수 441회
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 답변

  • 좋아요

    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]);
            }
    
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)