본문으로 바로가기

정렬(선택정렬)

category SECURITY/Python 2017. 4. 17. 20:24


   정렬(선택정렬)


   정렬

- 소규모 데이터에 적합

  선택정렬, 삽입정렬, 거품정렬

- 대규모 데이터에 적합 ( 분할 정복 기법 )

  합병정렬, 퀵소트, 힙소트


   선택정렬

- 제자리 알고리즘

- 1) 주어진 리스트에서 최솟값을 찾는다.

  2) 그 값을 맨 앞에 위치한 값과 교체한다.

  3) 나머지 리스트도 같은 방법으로 교체한다.

- EX)

 패스

테이블 

최솟값 

[9, 1, 6, 8, 4, 3, 2, 0

[0, 1, 6, 8, 4, 3, 2, 9

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를 이용 ]

[ 결과창 ]





'SECURITY > Python' 카테고리의 다른 글

정렬(거품정렬)  (0) 2017.04.18
정렬(삽입정렬)  (0) 2017.04.18
재귀함수  (0) 2017.04.13
모듈  (0) 2017.04.12
함수  (0) 2017.04.12