본문 바로가기
반응형

파이썬 정렬11

[Python][이코테] 계수 정렬 계수 정렬 계수 정렬(count sort)은 특정한 조건이 부합할 때만 사용할 수 있지만 매우 빠른 정렬 알고리즘이다. 사용하기 좋은 조건은 모든 데이터가 정수 데이터의 크기 범위가 제한되어 정수 형태로 표현할 수 있을 때 모든 범위를 담을 수 있는 크기의 리스트(배열) 선언 필수 즉 정수 형태의 리스트를 정렬할 때 가장 빠른 속도로 정렬이 가능한 알고리즘이다. 계수 정렬의 특징은 앞의 세 가지 정렬(선택, 삽입, 퀵)처럼 직접 데이터의 값을 비교하는 방식이 아니다 -> 비교 기반의 정렬 알고리즘이 아님 사용 계수 정렬은 일반적으로 별도의 리스트를 선언하고 그 안에 정렬에 대한 정보를 담는다. 예를 들어서 7 5 9 0 3 1 6 2 9 1 4 8 0 5 2 리스트가 있으면 가장 큰 데이터는 9, 가장 .. 2022. 9. 17.
[Python][이코테] 삽입 정렬 삽입 정렬 삽입 정렬은 말 그대로 '삽입' 하여 정렬하는 것이다. 예를 들어 0~9까지 숫자를 오름차순 하고 싶은데 앞의 '선택 정렬'은 가장 작은 숫자를 '찾아서' 순서대로 맞춘다. 하지만 삽입 정렬은 일부러 찾는 것이 아닌 앞 인덱스와 비교하여 현재 인덱스 값 보다 앞 인덱스 값이 크면 '선택'하여 앞으로 보내는 것이다. 삽입 정렬은 선택 정렬에 비해 실행 시간 측면에서 더 효율적이다. 삽입 정렬은 필요할 때만 위치를 바꾸므로 데이터가 거의 정렬되어 있을 때 훨씬 효율적이다. 선택 정렬은 현재 데이터의 상태와 상관없이 무조건 모든 원소를 비교하고 위치를 바꾸는 반면 삽입 정렬은 그렇지 않다. array = [7, 5, 9, 0, 3, 1, 6, 2, 4, 8] for i in range(1, len(.. 2022. 8. 31.
[Python][이코테] 선택 정렬 선택정렬은 말 그대로 '선택해서 정렬한다' 라고 할 수 있다. 예를들어 7 5 9 0 3 1 6 2 4 8 이라는 숫자의 모음이 있다. 이를 오름차순으로 정렬하고 싶을때 파이썬에서는 단순히 sort()를 사용하면 해결된다. 하지만 그래도 우리는 알고리즘을 공부하는 사람으로서 메서드에 의존할 것이 아닌 직접 코드로 구현할 줄 알아야한다. 선택 정렬의 알고리즘은 단순하다. 오름차순의 경우 '가장 작은 숫자를 찾아서 맨 앞에 두고, 그 다음 숫자를 찾아서 그 다음에 두고...' 를 반복한다. 7 5 9 0 3 1 6 2 4 8 에서 0 5 9 7 3 1 6 2 4 8 0을 찾아 7과 바꾸고 0 1 9 7 3 5 6 2 4 8 그 다음 1을 찾아 2번째 자리인 5와 바꾸는 식으로 가장 작은 숫자를 하나씩 찾아서.. 2022. 8. 17.
반응형