선택정렬

  • 주어진 리스트에서 최소값을 찾는다.
  • 최소 값을 찾아서 대상과 교환을 한다.
  • arr.length – 1 만큼 반복한다. 마지막은 할 필요가 없기 때문에

예를 들어보자

min = 6

6 2 7 8 1

  • min과 2를 비교해서 더 작은 값을 min에다 넣는다. min=2
  • 7과 8 도 비교를한다. 2가 더 작기 때문에 min은 그대로 2다.
  • min과 1을 비교한다. 1이 더 작기때문에 min 1을 넣는다.
  • 6과 1을교환 한다.
  • 이를 반복한다.

소스를 보자!

private static void selectionSort(int arr[]) {
    for (int i = 0; i < arr.length - 1; i++) {
        int min = i;
        for (int j = i + 1; j < arr.length; j++) {
            if (arr[j] < arr[min]) { //min이 클경우 대상이 작기 때문에 대상을 min에다 넣는다.
                min = j;
            }
        }
        int temp = arr[i];
        arr[i] = arr[min];
        arr[min] = temp;
    }
}