IT : 기초라는 뿌리

자바 기초(버블정렬) 본문

JAVA

자바 기초(버블정렬)

Parkej 2021. 8. 6. 23:55
사용자로부터 n 개의 정수를 입력받은 후 오름차순으로 정렬(sort)하여 출력하는 코드

 

 

public static void main(String[] args) {
		// 사용자로부터 n 개의 정수를 입력받은 후 오름차순으로 정렬(sort)하여 출력하는 코드
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int[] data = new int[n];
		
		
		for(int i=0;i<n;i++) {
			data[i] = sc.nextInt();
		}
		sc.close();
		
		// 거품 정렬(Bubble Sort)
		// data[0] ~ data[i] 중에서 최대값을 data[i] 위치로 몰아가는 일
		for(int i=n-1;i>0;i--) { // 마지막 인덱스가 기준점
			for(int j=0;j<i;j++) { // 첫번째부터 요소 비교 
				if(data[j] > data[j+1]) {
					// swap 알고리즘 
					int temp = data[j];
					data[j] = data[j+1];
					data[j+1] = temp;
				}
			}
		}
		
		System.out.println("sort arr");
		for(int i=0;i<n;i++) {
			System.out.println(data[i]);
		}
	}

 

정렬에도 여러 종류가 있죠 이번에는 버블정렬을 알아볼까 합니다. 

여기서 봐야할 부분은 바로 중간 부분입니다. 

 

		// data[0] ~ data[i] 중에서 최대값을 data[i] 위치로 몰아가는 일
		for(int i=n-1;i>0;i--) { // 마지막 인덱스가 기준점
			for(int j=0;j<i;j++) { // 첫번째부터 요소 비교 
				if(data[j] > data[j+1]) {
					// swap 알고리즘 
					int temp = data[j];
					data[j] = data[j+1];
					data[j+1] = temp;
				}
			}
		}

 

첫번째 for(int i=n-1;i>0;i--) 문은 마지막 인덱스를 기준점으로 하고 있습니다. 
두번째 for(int j=0;j<i;j++) 문은 배열의 첫번째 요소부터 변화하는 기준점을 토대로 순차 탐색을 합니다. 

중요한 조건문 안에 연산코드입니다. 
swap 즉, 배열안의 요소의 위치를 교환하는 가장 기초적인 방법입니다. 

조건문에 만족하게되면
int 형 변수 temp에 현위치 번지(인덱스)안의 요소를 저장시키고 비교했던 다음 번지의 요소를 현위치 번지에 저장합니다. 기존 번지의 값은 temp에 저장되어 있으므로 다음 번지에 temp 안에있는 값을 저장시키면 요소들의 교환이 완료가 됩니다. 

ㅎㅎ ㅈㅅ;;
발그림과 같이 요소들이 교환됩니다. 

실행결과
이렇게 정렬이 된 형태로 나오게 되었습니다. 

'JAVA' 카테고리의 다른 글

자바 기초(정렬 변형)  (0) 2021.08.07
자바 기초(0개 이상 연속 합과 최대값)  (0) 2021.08.06
자바 기초(중복 된 정수 쌍 찾기)  (0) 2021.07.26
자바 기초 (소수찾기)  (0) 2021.07.23
자바 기초 (배열 1)  (0) 2021.07.22