본문 바로가기
프로그래밍/PYTHON

[13일차] python 제자리 정렬 기법 (선택정렬, 거품정렬) / EOF(End Of File)

by B T Y 2017. 2. 24.
반응형

python 제자리 정렬 기법 (선택정렬, 거품정렬) / EOF(End Of File)에 대해서 정리한다.




※ 선택정렬 ( selection sort )



- 최소값을 찾아서 맨앞쪽에 있는 값과 교환하면서 정렬하는 방식이다.


- 가장 직관적인 방법으로 소량의 데이터를 정렬에서 효율적으로 쓰이고

데이터가 많아질수록 비효율적이 된다.

( 1000개 정도까지의 데이터는 효율적으로 처리 가능하다, 시간 복잡도 O(n^2) )


- 가장 직관적인 방법이라고 할수 있다.



- 리스트 안에 1부터 100까지의 수를 선택정렬 코드로 표현하면 아래와 같이 표현이 가능하다.

( 저번에는 min()함수를 이용해서 했지만 이번에는 최소값을 구하는 부분도

함수로 따로 만들어주었다 )




* random 모듈을 import해서 그 안에 random.shuffle(ulist)을 이용해주면

괄호 안에 있는 ulist에 들어있는 1부터 100까지의 숫자들을 무작위로 섞어줄수 있다




( 1부터 100까지의 리스트 안에 있는 원소들을 선택정렬을 통해 정렬한 결과이다 )


selection_sort.py






※ 거품정렬 ( bubble sort )



- 두 인접한 원소를 비교해서 정렬하는 방법이다.


- 선택정렬처럼 소규모 데이터에 어울리는 정렬 방법이다.

( 시간 복잡도가 O(n^2) 이다 )


- 최악의 상황까지 고려하면 거품 정렬은 배열의 길이 * 배열의 길이 만큼의 횟수로 동작 해줘야 한다








( 거품정렬로 1부터 10까지의 무작위 수열을 정렬햇다 )


bubble_sort.py






※ EOF ( End Of File )


- 파일의 끝이라는 뜻으로 터미널이나 실행기 입력을 종료할때 쓰인다.

( 찾아보니 반복문을 종료할때도 EOF를 조건으로 많이들 사용하고 있다 )


- EOF 단축키는 UNIX에서는 Ctrl + D 이고

WINDOWS에서는 Ctrl + Z 이다.

( PYTHON에서도 Ctrl + D로 쓰인다 )



그 외에 입력을 받고 싶은 만큼 받아서 출력해줄수 있는 방법에 대해서 알아본다.


sys 모듈을 import 해서 그 안에 있는 sys.stdin.read()를 이용하면 입력받고 싶은만큼

입력 받을수 있고 EOF를 이용해서 종료 후에 확인 해보면 입력 그대로 출력되는걸

알수 있다.




sys.stdin.read()를 tmp 변수에 넣고 출력해봤다.




입력 그대로 출력되는 모습을 볼수 있다.

( 입력을 끝내려고 할때는 EOF를 입력(Ctrl+D)해주면 끝난다 )


tmp 변수에 저장 되있는 내용도 확인해봤다.


반응형

댓글