본문 바로가기
개발/기본) 기본기

기본기)정렬)c#) 선택정렬(Select Sort)

by 테샤르 2020. 8. 29.

선택정렬(Select Sort)

 

선택정렬은 첫번째 노드와 두번째 노드부터 마지막 노드까지 차례대로 비교하며 가장 작은 값을 찾아 첫번재에 놓고, 두번째에서 세번째 노드부터 마지막 노드까지의 데이터를 다시 비교하는 방식으로 이 과정을 반복해서 정렬을 수행한다.

1회전을 수행하고 나면 가장 작은 값이 맨 앞에 오기 때문에 그 값을 제외한 나머지 값을 비교한다. 점점 정렬될수록 비교하는 대상이 줄어든다.

 

배열에 7 4 5 1 3 의 값이 있을 경우는 다음과 같다.

 

1회전에서는  첫번째 인덱스와 다음인덱스를 비교하며 가장 작은 값을 변경한다.

2회전에서는 두번째 인덱스와 다음 인덱스를 비교하며 가장 작은 값을 변경한다.

마지막 인덱스 전까지 반복한다.

 public void SetSelectSort(List<int> _list){
        Logger.LogFormat("[Select - Sort] Start ");
        int sortCount = 0;
        for(int i =0;i<_list.Count;i++){
            for(int j = i+1;j<_list.Count;j++){
                if(_list[i] > _list[j]){
                    int tempValue = _list[j];
                    _list[j] = _list[i];
                    _list[i] = tempValue;
                }
                sortCount++;
            }

            this.DebugText(_list);
        }
        Logger.LogFormat("[Select - Sort] End ");
    }

 

선택 정렬의 특징은 다음과 같다.

 

가장 작은 값을 가지는 인덱스를 가지고 가장 앞에서 부터 체워나가면서 정렬하는 방식

 

시간 복잡도 : O(n^2)

공간 복잡도 : O(n)

 

 ★

 

반응형

댓글