선택 정렬

호떡·2022년 8월 21일
0

정렬의 종류

버블 정렬(Bubble Sort)
선택 정렬(Selection Sort)
카운팅 정렬(Counting Sort)
삽입 정렬(Insertion Sort)
힙정렬
병합 정렬
퀵정렬

선택 정렬이란

셀렉션 알고리즘을 전체 자료에 적용한 것으로, 주어진 자료들 중 가장 작은 값의 원소부터 차례대로 선택하여 위치를 교환하는 방식이다.
(셀렉션 알고리즘이란 저장되어 있는 자료로부터 k번째로 큰 혹은 작은 원소를 찾는 알고리즘이다.)
⭐가장 작은 원소의 인덱스를 찾기
⭐swap은 (내부 for문 끝나고서) 1번만

정렬 과정

주어진 리스트 중에서 최소값을 찾는다.
그 값을 리스트의 맨 앞에 위치한 값과 교환한다.
맨 처음 위치를 제외한 나머지 리스트를 대상으로 위의 과정을 반복한다.

구현

	int[] arr = {123, 64, 321, 88, 87, 12, 8};
	int len = arr.length;
		
	// 총 len-1만큼 반복
	// 마지막 자리는 1개만 남아있는 상태이므로 정렬할 필요없음
	for(int i=0; i < len-1; i++) {
		int minIdx = i;
		for(int j=i+1; j < len; j++) {
			// 가장 작은 값의 인덱스 번호를 알기 때문에
			// 따로 그 값을 저장하지 않아도 된다.
			if(arr[minIdx] > arr[j]) {
				minIdx = j;
			}
		}
		//여기서 1번 swap
		int tmp = arr[i];
		arr[i] = arr[minIdx];
		arr[minIdx] = tmp;
	}

0개의 댓글