Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 27 | 28 | 29 | 30 |
Tags
- 자료구조
- map
- 아두이노
- queue
- WinAPI
- 통계학
- arduino compiler
- directx
- 라인트레이서
- LineTracer
- Arduino
- 아두이노 소스
- 수광 소자
- Array
- 아두이노 컴파일러
- 운영체제
- vector
- c++
- Algorithm
- Stack
- set
- list
- priority_queue
- Deque
- html
- stl
- 시스템프로그래밍
- Visual Micro
- C언어
- 컴퓨터 그래픽스
Archives
- Today
- Total
Kim's Programming
[정렬 알고리즘]Select Sorting - 선택정렬 본문
선택 정렬은 다음과 같은 과정을 거치며 정렬을 해가는 정렬알고리즘입니다. 선택정렬은 BigO(n^2)의 시간이 걸립니다.
- 주어진 데이터들 중에서 가장 작은 데이터를 찾는다
- 정렬되지 않는 값들 중에 가장 앞에 있는 데이터와 교체한다
- 정렬된 값들을 제외하고 나머지에 대하여 정렬이 끝날때 까지 반복한다.
선택정렬의 과정을 애니메이션으로 나타내면 다음과 같이 진행이 됩니다.
정렬된 대상을 제외한 값들에 대해서 최소값을 찾은 뒤 교체하는 과정의 반복입니다. 위의 반복을 프로그래밍으로 표현하면 다음과 같이 됩니다.
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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | #include<iostream> void Print(int TargetArray[], int Length) //출력을 위한 함수 { for (int i = 0; i < Length; i++) std::cout << TargetArray[i] << " "; std::cout << std::endl; } void Swap(int *Target_Left, int *Target_Right) //값 교체를 위한 함수 { int Temp; Temp = *Target_Right; *Target_Right = *Target_Left; *Target_Left = Temp; } void SelectSorting(int *TargetArray, int Length) //선택정렬 { int MinimumPosition = 0; int InsertPosition = 0; for (int pass = 0; pass < Length - 1; pass++) //1pass { MinimumPosition = InsertPosition; //정렬되지 않은 값들중 제일 앞에는 우선 최소도 둔다 for (int i = InsertPosition + 1; i < Length; i++) { if (TargetArray[i] < TargetArray[MinimumPosition]) //최소 값을 발견하면 그 위치를 기억한다 MinimumPosition = i; } Print(TargetArray, Length); Swap(&TargetArray[MinimumPosition],&TargetArray[InsertPosition]); //한 패스가 끝나면 제일 작은 위치와 정렬되지 않은 값들의 제일앞과 교체한다 InsertPosition++; } } void main() { int Array[] = { 3,1,9,5,7 }; SelectSorting(Array, 5); std::cout<<"최종 결과 : "; Print(Array, 5); } | cs |
결과는 다음과 같이 나오게 됩니다
'Programming > Algorithm' 카테고리의 다른 글
[정렬 알고리즘]Bubble Sorting - 버블정렬 (0) | 2016.07.18 |
---|---|
[정렬 알고리즘]Insert Sorting - 삽입정렬 (0) | 2016.07.18 |