알고리즘
-
[CS] 퀵 정렬(Quick Sorting)Computer Science 2020. 11. 20. 22:30
찰스 앤서니 리처드 호어라는 사람이 만든 정렬 알고리즘이다.분할 정복(Divide and Conquer) 방식을 기반으로 하며최악의 경우 O(N^2), 평균적인 경우 O(n log n)의 시간 복잡도를 가진다.요소들이 균일하게 섞여있는 경우 가장 빠르며, 내림차순으로 정렬되어 있을 때에 가장 느리다.이름에서도 알 수 있듯, 가장 빠른 정렬 알고리즘들 중 하나에 속한다. 분할 정복방식이란?분할 정복 방식이란 말 그대로 어떤 커다란 문제를 여러 개의 작은 문제로 분할 한 뒤, 각각을 해결하고,해결된 각 부분을 합하여 전체의 문제를 정복하는 문제 해결 방식이다.퀵 정렬도 이러한 방식을 기초로 하고 있다. 퀵 정렬 알고리즘의 수행 과정1.배열의 첫번째 요소를 피벗(Pivot)으로 정한다. 여기서 피벗이란 배열의..
-
[PS] 백준 - 수 정렬하기 2Problem Solving 2020. 11. 19. 21:03
입력된 갯수만큼 수를 입력하고,해당 수열을 오름차순으로 정렬해야하는 문제이다. a = int(input()) entries=[] for x in range(0,a): entries.extend([int(input())]) entries.sort() for x in entries: print(x)멍청하게도, 그냥 아싸리 파이썬의 정렬함수를 이용하여 제출했으나결과는 제한 시간 2초를 넘겨 통과하지 못했다. 제한 시간이 2초밖에 안되는 만큼, 가장 빠른 정렬을 이용할 필요가 있다고 생각했고,퀵 정렬을 이용하기로 하였다. def quicksort(entry): if len(entry) entry[1]: temp = en..