정렬(선택정렬)
정렬
- 소규모 데이터에 적합
선택정렬, 삽입정렬, 거품정렬
- 대규모 데이터에 적합 ( 분할 정복 기법 )
합병정렬, 퀵소트, 힙소트
선택정렬
- 제자리 알고리즘
- 1) 주어진 리스트에서 최솟값을 찾는다.
2) 그 값을 맨 앞에 위치한 값과 교체한다.
3) 나머지 리스트도 같은 방법으로 교체한다.
- EX)
패스 |
테이블 |
최솟값 |
0 |
[9, 1, 6, 8, 4, 3, 2, 0] |
0 |
1 |
[0, 1, 6, 8, 4, 3, 2, 9] |
1 |
2 |
[0, 1, 6, 8, 4, 3, 2, 9] |
2 |
3 |
[0, 1, 2, 8, 4, 3, 6, 9] |
3 |
4 |
[0, 1, 2, 3, 4, 8, 6, 9] |
4 |
5 |
[0, 1, 2, 8, 4, 8, 6, 9] |
6 |
6 | [0, 1, 2, 3, 4, 6, 8, 9] | 8 |
먼저 파이썬으로 제자리 정렬이 아닌 최솟값만을 구해 다른 리스트에 추가해서 정렬해보는 방식으로 해보겠습니다.
ex) [9, 1, 6, 8, 4, 3, 2, 0] → [0], [9, 1, 6, 8, 4, 3, 2] → [0] + [1], [9, 6, 8, 4, 3, 2]
[ While loop를 이용 ]
[ 꼬리재귀 이용 ]
[ 재귀함수 이용 ]
[ 결과창 ]
제자리 정렬
리스트를 추가하지 않고 제자리에서 최솟값을 구해서 값을 바꾸는 방법으로 제자리 정렬을 이용해보겠습니다.
[ While loop를 이용 ]
[ 결과창 ]