[정렬]
정렬 알고리즘은 목록의 요소를 특정 순서대로 알고리즘이다. 대개 숫자식 순서와 사전식 순서로 정렬한다.
[버블 정렬]
def bubblesort(A):
for i in range(1,len(A)):
for j in range(0,len(A)-1):
if A[j] > A[j+1]:
A[j], A[j+1] = A[j+1], A[j]
가장 비효율적인 정렬 알고리즘이다. O의 n의 제곱.
맨앞부터 비교하면서, 결국 제일 큰게 맨뒤로 오고 거기서 부터 채워지는 방식.
[병합 정렬]
https://www.youtube.com/watch?v=FCAtxryNgq4
분할 정복(Divide and Conquer)알고리즘을 이용한다.
최선과 최악 모두 O(n log n)인 사실상 완전한 ceta(n log n)으로 일정한 알고리즘이다.대부분 퀵 정렬보다는 느리지만, 일정한 실행 속도뿐만 아니라 무엇보다 안정 정렬이다. 먼저 분할 할 수 없을때까지 쪼개서 계속 분할을 한 후, 분할이 끝나면 정렬하면서 정복해 나간다.
전부 분할하고, 합치면서 정렬해서 리턴
[퀵정렬]
https://www.youtube.com/watch?v=cWH49IKDIiI
피벗을 기준으로 좌우를 나누는 특징 때문에, 파티션 교환 정렬이라고도 불린다. 병합 정렬과 마찬가지로 분할 정복 알고리즘이며 여기에 피벗이라는 개념을 통해 피벗보다 작으면 왼쪽, 크면 오른쪽과 같은 방식으로 파티션닝 하면서 쪼개 나간다.