단순 정렬
단순 선택 정렬
- 아직 정렬하지 않는 부분에서 값이 가장 작은 원소를 선택한다.
- 가장 작은 원소와 아직 정렬하지 않는 부분에서 맨 앞에 있는 원소를 교환한다.
-> 중복된 값으로 정렬이 필요 없는 데이터의 위치가 바뀌는 경우가 존재하여 안정적이지 않다.
단순 삽입 정렬
- 주목된 원소보다 더 앞쪽에 들어가야 하는 자리로 해당 원소를 이동시킨다.
단순 선택 정렬
과는 비슷해 보이지만 값이 가장 작은 원소를 선택하지 않는다.이진 삽입 정렬
from typing import MutableSequence def insertion_sort(a: MutableSequence) -> None: n = len(a) for i in range(1, n): j = i tmp = a[i] while j > 0 and a[j - 1] > tmp: a[j] = a[j - 1] j -= 1 a[j] = tmp # n^2/2 def binary_insertion_sort(a: MutableSequence) -> None : n = len(a) for i in range(1, n): key = a[i] pl = 0 pr = i - 1 while True: pc = (pr + pl) // 2 if a[pc] == key: break elif a[pc] < key: pl = pc + 1 else: pr = pc - 1 if pl > pr: break if pl <= pr: pd = pc + 1 else: pd = pr + 1 for j in range(i, pd, -1): a[j] = a[j - 1] a[pd] = key def binary_insertion_sort(a: MutableSequence) -> None : for i in range(1, len(a)): bisect.insort(a, a.pop(i), 0, i)
Author And Source
이 문제에 관하여(단순 정렬), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@aspalt85/단순-정렬저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)