본문 바로가기

JAVA

JAVA(13) - 배열 자료 구조/최대/최소/SWAP/버블 정렬/선택 정렬

1. 배열 자료 구조

배열을 배열에 대입하고 값을 입력하면 같은 메모리공간을 공유하기 때문에 
둘중에 하나의 변수에 새로운 값을 대입해주어도 두 배열 모두 수정된 값으로 출력된다

		int intArr[] = new int[5];
		int mArr[] = intArr;
		
		for(int i = 0; i < 5; i++) {
			intArr[i] = i;			
		}
		
		for (int j = 0; j < 5; j++) {
			System.out.println(intArr[j]);
		}
		System.out.println("------------");
		for (int k = 0; k < 5; k++) {
			System.out.println(mArr[k]);
		}
		
		mArr[2] = 100;
		System.out.println("------------");
		for (int k = 0; k < 5; k++) {
			System.out.println(intArr[k]);
		}

2. 최대/최소

문제 ) 5개의 숫자를 입력받아서 가장 큰 수와 가장 작은 수를 출력하시오.

		Scanner scan = new Scanner(System.in);
		
		System.out.println("숫자 5개를 입력하세요.");
		
		int numArr[] = new int[5];
		
		//5개 숫자 입력 처리
		for (int i = 0; i < 5; i++) {
			numArr[i] = scan.nextInt();
		}
		
		//최대값/최소값 찾기
		int max = 0, min = 9999;	
		
		for (int j = 0; j < 5; j++) {
			//최대값 비교
			if(max < numArr[j]) {
				max = numArr[j];
			}
			
			//최소값 비교
			if(min > numArr[j]) {
				min = numArr[j];
			}
		}
		
		System.out.println("가장 큰 값은 " + max + ", 가장 작은 값은 " + min);
		

3. SWAP 

변수 a와 변수 b의 값을 서로 교환하려면?

변수c를 만들어서 c에 a의 값을 대입, a에 b의 값을 대입, c에 a의 값을 대입.

		int num1 = scan.nextInt();
		int num2 = scan.nextInt();
		int temp = 0;
		
		temp = num1;
		num1 = num2;
		num2 = temp;	

 

4. 버블 정렬

버블 정렬 : 첫 라운드 끝나면 맨 뒤에 제일 큰수가 들어가고 다음 라운드로 넘어감

1라운드 : 0번과 1번 비교, 1번과 2번 비교, 2번과 3번 비교, 3번과 4번 비교 
2라운드 : 0번과 1번 비교, 1번과 2번 비교, 2번과 3번 비교
3라운드 : 0번과 1번 비교, 1번과 2번 비교
4라운드 : 0번과 1번 비교

 

		int numArr[] = { 8, 23, 100, 26, 1};
		
		System.out.println("정렬 전 : ");
		for (int n : numArr) {
			System.out.print(n + " ");
		}
		System.out.println();//줄바꿈 처리
		
		int temp = 0;

		System.out.println("배열의 크기: " + numArr.length);

		for (int i = 0; i < numArr.length; i++) {//라운드 횟수
			for (int j = 0; j < numArr.length - i - 1; j++) { 
 //조건식에서 -i해주고 -1까지 해주는 이유는 if 문에서 numArr[j + 1]으로 비교해야해서 
 //배열번호가 초과되지 않도록 조절해준것.
				if(numArr[j] > numArr[j + 1]) {
					temp = numArr[j];
					numArr[j] = numArr[j+1];
					numArr[j+1] = temp;
				}
			}
		}
        
        	System.out.println("버블 정렬 후 : ");
		for (int i = 0; i < numArr.length; i++) {
			System.out.printf(numArr[i] + " ");
		}
		//출력 for문 아래 for문처럼도 쓸 수 있음
		for (int n : numArr) {
			System.out.printf(n + " ");
		}
		

5. 선택 정렬

		for (int i = 0; i < numArr.length; i++) {
			for (int j = numArr.length-1; j < numArr.length - i - 1; j++) {
				if(numArr[j] > numArr[j]) {
					temp = numArr[j];
					numArr[j] = numArr[j+1];
					numArr[j+1] = temp;
				}
			}
		}
		System.out.println();
		System.out.println("선택 정렬 후 : ");
		for (int n : numArr) {
			System.out.printf(n + " ");
		}