python 제자리 정렬 기법 (선택정렬, 거품정렬) / EOF(End Of File)에 대해서 정리한다.
※ 선택정렬 ( selection sort )
- 최소값을 찾아서 맨앞쪽에 있는 값과 교환하면서 정렬하는 방식이다.
- 가장 직관적인 방법으로 소량의 데이터를 정렬에서 효율적으로 쓰이고
데이터가 많아질수록 비효율적이 된다.
( 1000개 정도까지의 데이터는 효율적으로 처리 가능하다, 시간 복잡도 O(n^2) )
- 가장 직관적인 방법이라고 할수 있다.
- 리스트 안에 1부터 100까지의 수를 선택정렬 코드로 표현하면 아래와 같이 표현이 가능하다.
( 저번에는 min()함수를 이용해서 했지만 이번에는 최소값을 구하는 부분도
함수로 따로 만들어주었다 )
* random 모듈을 import해서 그 안에 random.shuffle(ulist)을 이용해주면
괄호 안에 있는 ulist에 들어있는 1부터 100까지의 숫자들을 무작위로 섞어줄수 있다
( 1부터 100까지의 리스트 안에 있는 원소들을 선택정렬을 통해 정렬한 결과이다 )
※ 거품정렬 ( bubble sort )
- 두 인접한 원소를 비교해서 정렬하는 방법이다.
- 선택정렬처럼 소규모 데이터에 어울리는 정렬 방법이다.
( 시간 복잡도가 O(n^2) 이다 )
- 최악의 상황까지 고려하면 거품 정렬은 배열의 길이 * 배열의 길이 만큼의 횟수로 동작 해줘야 한다
( 거품정렬로 1부터 10까지의 무작위 수열을 정렬햇다 )
※ 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 변수에 저장 되있는 내용도 확인해봤다.
'프로그래밍 > PYTHON' 카테고리의 다른 글
[15일차] python 클래스(Class)의 구성요소 / 캡슐화 / @property / @staticmethod (0) | 2017.02.28 |
---|---|
[14일차] 합병정렬(Merge sort) / 클래스와 객체(Class and Object) (0) | 2017.02.27 |
[12일차] python 정렬 알고리즘(Sorting algorithm) (0) | 2017.02.23 |
[11일차] python 꼬리 재귀함수 (0) | 2017.02.23 |
[10일차] 재귀함수를 이용한 간단한 지수, 곱셈함수 (0) | 2017.02.21 |
댓글