본문 바로가기

국비과정/JAVA (기초)

20230612 _[7일차]_04. 배열 정렬

[ 배열 정렬 ]

package jun12;

import java.util.Arrays;

public class Test01 {
	public static void main(String[] args) {

		// 배열정렬 
		// 앞뒤 숫자두개 비교후 작은숫자 앞으로_배열끝까지 & while로 과정 반복	
		int[] a = {75, 95, 85, 100, 50};
		int temp;
		
		for (int i = 0; i < a.length; i++) {
			for (int j = 0; j < a.length-1; j++) {
				if(a[j] > a[j+1]) {
					temp = a[j];  
					a[j] = a[j+1];
					a[j+1] = temp; 
				}
			}
		}
		
		//print
		System.out.println(Arrays.toString(a));	
		
	}
}


// j = 0 {75 85 95 100 50} 
// j = 1 {75 85 95 50 100}
// j = 2 {75 85 50 95 100}
// j = 3 {75 50 85 95 100}
// j = 4 {50 75 85 95 100}

 

[50, 75, 85, 95, 100]

package jun12;

import java.util.Arrays;

public class Test02 {
	public static void main(String[] args) {

		
		int[] a = {75, 95, 85, 100, 50};
		int temp;
		
		//			5			1 4				3			2
		while(a[0] > a[1] || a[1] > a[2] || a[2] > a[3] || a[3] > a[4]) {
			for (int j = 0; j < a.length-1; j++) {
				System.out.println("실행합니다.");
				if(a[j] > a[j+1]) {
					temp = a[j];  
					a[j] = a[j+1];
					a[j+1] = temp;
				}
			}
		}
		
		//print
		System.out.println(Arrays.toString(a));
				
	}
}

// j = 1 {75 85 95 100 50} 
// j = 4 {75 85 95 50 100}

// j = 2 {75 85 50 95 100}

// j = 1 {75 50 85 95 100}

// j = 0 {50 75 85 95 100}

실행합니다.
....
실행합니다. X 16개
[50, 75, 85, 95, 100]

[ 배열 + 랜덤숫자넣기 ]

(1)

package jun12;

import java.util.Arrays;
import java.util.Iterator;

// 3X3 배열에 1~9까지 숫자 랜덤하게 입력하기
public class Sam {
	public static void main(String[] args) {
		
		int[][] sam = new int[3][3];
		
		/*
			[0, 0] [0, 1] [0, 2]
			[1, 0] [1, 1] [1, 2]
			[2, 0] [2, 1] [2, 2]
				
		*/

		int num = 1;
		for (int i = 0; i < sam.length; i++) {					// 값을 넣어주기 위한 for문
			for (int j = 0; j < sam[i].length; j++) {
				int temp = (int) (Math.random() * 9) + 1;
				System.out.println("뽑은 숫자 : " + temp);
				//boolean 변수로 확인해보기로 변경
				boolean check = false;
				check: for (int k = 0; k < sam.length; k++) {	 // 중복검사를 위한 for문 (check)
					for (int k2 = 0; k2 < sam[i].length; k2++) {		
						if(temp == sam[k][k2]){
							check = true;
							break check;		// [0 0]  vs  [0 0] 		[1 0] vs [0 0] [0 1]
						}						// [0 1]  vs  [0 0]					 [1 0] [1 1]
					}							// [0 2]  vs  [0 0][0 1]
				}// 검사 for문
				if(check) { // boolean검사
					j--;	// 다시 뽑기
				} else {
					sam[i][j] = temp; // 입력해주기
				}
			} // for문끝
		}
		
		
		// print
		for (int[] is : sam) {
			System.out.println(Arrays.toString(is));
		}	
		
	}
}

(2)

package jun12;

import java.util.Arrays;

// 다른 모양
public class Sam02 {
	public static void main(String[] args) {
		
		int[][] sam = new int[3][3];
		int[] number = {1, 2, 3, 4, 5, 6, 7, 8, 9}; // 입력숫자
		
		// 입력숫자에서 랜덤하게 한 숫자를 뽑아 00부터  22까지
		// 순차 입력하고 뽑힌 입력 숫자는 0으로 바꾸기
		// 입력 숫자 뽑기에서 0이면 다시 뽑기
		
		for (int i = 0; i < sam.length; i++) {
			for (int j = 0; j < sam[i].length; j++) {
				
				int temp = 0; // temp는 배열 number의 index
				do {
					temp = (int) (Math.random() * 9); // 0~8
				} while (number[temp] == 0);
				sam[i][j] = number[temp]; // 저장하기
				number[temp] = 0; // 중복 방지하기 위해서
			} // 내부측
		} // 배열 외부측
	
			
		for (int[] is : sam) {
			System.out.println(Arrays.toString(is));
		}
		
		
	}
}

(3)

package jun12;

import java.util.Arrays;

public class Sam03 {
	public static void main(String[] args) {

		int[][] sam = new int[3][3];
		// index를 뽑아서 해당 위치에 1~9 순차적으로 입력하기
		for (int i = 0; i < 10; i++) {
			int r1 = (int) (Math.random() * 3);
			int r2 = (int) (Math.random() * 3);
			if(sam[r1][r2] == 0) {
				sam[r1][r2] = i;
			} else {
				i--;
			}
		}
		
		for (int[] is : sam) {
			System.out.println(Arrays.toString(is));
		}
		
		
	}
}