정보보안공부

python_day15_선택정렬, 랜덤선택정렬 본문

Language/python

python_day15_선택정렬, 랜덤선택정렬

Steady_sp 2017. 2. 9. 19:32

***선택정렬

 

- 최소값의 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가지 방법으로 선택정렬을 아래와 같이 표현할 수 있다.

 

***선택정렬 - 재귀적 표현

 

 

***선택정렬 - 꼬리 재귀적 표현

 

 

***선택정렬 - 루프문 표현

 

# 결과

 

Comments