본문 바로가기
Coding Note/Java

Java 4-5) Sorting 정렬 _ 선택정렬, swap

by 푸린이 2021. 12. 12.

* 정렬 Sorting

- 데이터가 마구잡이로 나열되어있을 때 순서대로 정렬

- 맨 앞 숫자를 그 다음 숫자부터 끝까지 비교하면서 자리를 옮겨줌

- 선택, 삽입, 버블, 합병, 퀵(알고리즘)

 

* 예시

3, 5, 1, 4, 2를 정렬하라

int number[] = {3, 5, 1, 4, 2};

int temp;
for (int i = 0; i < number.length - 1; i++) {		// 첫번째 자리 비교, 마지막자리는 비교하지 않아도 됨
	for(int j = i + 1; j < number.length; j++) {		// 그 다음 자리 비교  (i는 0번째, j는 1번째부터)
		if(number[i] > number[j]) {		// 교환처리(swap) , 오름차순 정렬로(<, 내림차순)
			temp = number[i];
			number[i] = number[j];
			number[j] = temp;
		}
	}
}
System.out.println(Arrays.toString(number));

 

* 예제

* 정렬프로그램 만들기
 - user 몇개의 숫자를 정렬할지 입력받기
   - 개수를 결정
 - 숫자들을 입력받기
 - 오름차순/내림차순 골라라
 - 정렬처리
 - 결과 출력
Scanner sc = new Scanner(System.in);

// 변수 선언, 배열은 초기화까지 했음
int count;		// 몇개를 정렬할지의 변수
int number[] = null;	// 결정된 것이 없어서 null
int updown;

// 입력
	// user 몇개의 숫자를 정렬?
	// 개수를 결정
System.out.print("몇개의 숫자를 정렬하시겠습니까?");
count = sc.nextInt();

number = new int[count];

	// 숫자들을 입력
for (int i = 0; i < number.length; i++) {
	System.out.print((i+1) + "번째 수 = ");
	number[i] = sc.nextInt();
}

// 오름차순/내림차순 골라라
System.out.print("오름(1)/내림(2) = ");
updown = sc.nextInt();

// 정렬처리 (swap)
int temp;		// 변수 선언 밑에다가 적어도 됨
for (int i = 0; i < number.length - 1; i++) {
	System.out.println("i = " + i);		// 실행해보기
	for (int j = i + 1; j < number.length; j++) {
		System.out.println("\tj = " + j);		// 실행해보기
		if(updown == 1)	{		// 오름차순
			if(number[i] > number[j]) {
				temp = number[i];
				number[i] = number[j];
				number[j] = temp;
			}
		}
		else {		// 내림차순
			if(number[i] < number[j]) {
				temp = number[i];
				number[i] = number[j];
				number[j] = temp;
			}


		}
	}
}

// 결과 출력
System.out.println(Arrays.toString(number));

 

댓글