본문 바로가기

Programming Language/JAVA

[JAVA] java 선택정렬 알고리즘

 

  선택정렬
: 첫번째 자리에 원하는 값을 위치하는 것으로 오름차순과 내림차순에 따라 값이 변할 수 있다.
오름차순을 기준으로 했을때 앞에 있는 값과 그 이후의 값들을 비교하여 가장 작은 값을 그위치에 놓는다.
다음 위치에 있는 값과 그 이후의 값들을 비교하여 가장 작은 값을 놓는다.
결국 정렬이 끝날때까지 이를 반복하면 전체적으로 값이 정렬에 이루어진다.

 

 

 오름차순
- 예> 1,2,3,4,5

내림차순
- 예> 5,4,3,2,1

 

 

 

 

 

 

 


 

 

import java.util.Scanner;

public class Quiz {

	public static void main(String[] args) {
		int ls[] = new int[] { 4, 5, 9, 2, 7 };
		int i = 0, j = 0, tmp = 0;
		for (; i < ls.length; i++) {
			for (j = i + 1; j < ls.length; j++) {
				if (ls[i] > ls[j]) {
					tmp = ls[i];
					ls[i] = ls[j];
					ls[j] = tmp;
				}
			}
		}
		for (i = 0; i < ls.length; i++) {
			System.out.println(ls[i] + " ");
		}
	}
}

* 선택정렬 설명 (오름차순)우선 ls배열로 4,5,9,2,7을 선언해줍니다. ( 5개 선언)

 

i와j와tmp를 각각 변수선언해줍니다.
첫번쨰 for문에서 초기값은 정하지않았습니다. 이유는 i를 이미 위에서 0을로 선언했기때문입니다.
ls배열변수를 길이만큼 반복해주고, 지속적으로 증감해주는 조건을 만들어줍니다.
두번쨰 for문은 i보다 1더해준 값으로 다음 인자값과 비교해주기위해 반복해줍니다.
if문으로 들어와서 0번인자값인 4와 1번인자값인 5를 비교해주고 거짓이기에 넘어갑니다.
다음으로 4와 9를 비교해줬을때 거짓이기에 넘어가고, 4와2를 비교했을때 참이 성립되므로,
i인자값이 크면 tmp라는 일종에 잠시 담아주는 그릇으로만든 변수에 값을 담아놓고, 순서에 맞게 옮겨줍니다. 그리고 마지막에 tmp변수에 있는 값을 다시 j에 담아서 서로 바꿔줍니다.
그렇게 완성된 선택정렬을 순서대로 출력해줍니다.