정보보안공부
python_day15_선택정렬, 랜덤선택정렬 본문
***선택정렬
- 최소값의 inde(위치)를 이용해 순차적으로 정렬한다.
-> 최소값의 index를 구하는 함수를 이용해 min_num, index는 초기값 lists[x]와 x로 설정한다.
-> for문을 이용해 초기값으로 정한 min_num이 다른 원소보다 크다면 그 원소를 최소값 min_num으로 지정한다. 그 위치는 index=i를 이용해 최소값의 위치를 파악한다.
-> range(x, y+1)에서 y+1의 이유는 range의 범위가 y+1일때 x부터 y까지가 범위이기 때문이다.
-> selection_sort에서의 range(size-1)은 만약 리스트의 총길이가 5라면 range(5-1) 즉 range(4)로인해 0,1,2,3의 범위를 나타낸다. 최소값은 맨마지막 인덱스4의 위치에 있을수 없기 때문에 size-1를 사용했다.
-> selection_sort에서의 min_index(i, size-1)은 인덱스는 0부터 시작되기때문에 리스트의 총길이 5의 5-1 = 4로 작성한다.
-> index를 구하면 ulsts[i], ulists[index] = ulists[index], ulists[i]를 이용해 최소값의 위치를 i번째로 바꿔준다.
## 결과
***랜덤선택정렬
-> 랜덤선택정렬은 기존의 선택정렬에 random함수를 이용해 lists를 랜덤으로 만드는 것이다.
-> 필요한 코드로는 import random을 이용해 random함수를 불러오고
-> random.shuffle(lists)를 이용해 1부터100까지 순차적으로 작성된 리스트를 랜덤으로 섞는다.
#결과
-> 앞서배운 재귀함수, 꼬리재귀함수, 루프문함수를 이용해 3가지 방법으로 선택정렬을 아래와 같이 표현할 수 있다.
***선택정렬 - 재귀적 표현
***선택정렬 - 꼬리 재귀적 표현
***선택정렬 - 루프문 표현
# 결과
'Language > python' 카테고리의 다른 글
python_day16_합병정렬, 랜덤합병정렬 (0) | 2017.02.12 |
---|---|
python_day17_클래스 (0) | 2017.02.11 |
python_day14_피보나치 수 (0) | 2017.02.09 |
python_day13_재귀함수2_곱셈함수,지수함수 (2) | 2017.01.31 |
python_day12_윤년구하기, 재귀함수 (0) | 2017.01.31 |