728x90
선택정렬이란
- 제자리 정렬 알고리즘의 하나
- 정렬되지 않은 자료중
과정
1. 주어진 리스트중 가장 작은 값을 찾는다
2. 그 값을 맨앞에 위치한 값과 뒤 바꾼다
3. 맨 처음 위치를 뺀 나머지리스트를 같은 방법으로 순회하여 교체한다.
시간 복잡도
- Θ(n2)
코드
1) SelectionSort Class
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | public class SelectionSort { public void selectionSort(int[] unsortedList) { for(int i = 0; i < unsortedList.length - 1; i++) { int min = i; for(int j = i+1; j < unsortedList.length; j++) { if(unsortedList[min] > unsortedList[j]) min = j; } SortUtil.swap(unsortedList, i, min); } SortUtil.printList(unsortedList); } public static void main(String[] args) { // TODO Auto-generated method stub int[] list = new int[]{3,1,4,5,2}; SelectionSort selection = new SelectionSort(); selection.selectionSort(list); } } | cs |
2) SortUtil Class
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public class SortUtil { public static void printList(int[] list) { for(int num : list) System.out.println(num + " "); } public static void swap(int[] list, int num1, int num2) { int temp = list[num1]; list[num1] = list[num2]; list[num2] = temp; } } | cs |
코드해석
1. i에 대한 for문은 1씩 증가할 때 마다 리스트에서 정렬되지 않은 첫번째 원소를 선택하고 int min 변수에 원소의 위치(i)를 저장한다
2. j에 대한 for문은 1씩 증가할 때 마다 리스트에서 min 위치에 있는 값과 j의 위치값을 비교하여
j위치 값이 더 작은 경우 min 변수에 j를 저장한다.
3. j에 대한 for문이 1사이클을 종료하면 i위치의 원소와 min위치의 원소를 뒤바꾼다
'CS(Computer Science) > 알고리즘' 카테고리의 다른 글
알고리즘 - 그리디01 그리디(Greedy) 알고리즘이란? (0) | 2019.03.18 |
---|---|
JAVA 퀵정렬(Quick Sort)이란 - 수정중 (0) | 2018.11.18 |
JAVA 버블정렬이란(Bubble Sort) (0) | 2018.10.28 |
알고리즘 성능분석 (0) | 2018.10.21 |
프린터 큐 (0) | 2018.09.12 |