선택정렬(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)
★★☆☆☆
반응형
'개발 > 기본) 기본기' 카테고리의 다른 글
기본기)정렬)c#) 셸 정렬(Shell Sort) (8) | 2020.08.29 |
---|---|
기본기)정렬)c#) 삽입 정렬(Insert Sort) (0) | 2020.08.29 |
기본기)정렬)c#) 버블 정렬(Bubble Sort) (0) | 2020.08.29 |
기본기)Array 와 List 의 차이점 (2) | 2020.08.11 |
기본기) 우선순위 큐(Priority Queue) (0) | 2020.05.11 |
댓글