문제 설명
무작위로 배열된 숫자 집합을 작은 것부터 큰 것 순서로 다시 배열합니다.
삽입 알고리즘
배열에서 한 숫자씩 가져와 기존 숫자와 비교하여 적절한 위치에 삽입합니다.
이 방법을 반복하면 숫자가 제거될 때까지 기존 숫자를 순서대로 유지할 수 있을 때마다, 즉 정렬이 성공합니다.
이것은 카드 놀이를 할 때 카드를 뽑는 상황과 매우 유사합니다.
첫 번째 조건: 손에 있는 카드의 순서를 올바르게 유지하세요
두 번째 조건: 매번 새로운 카드를 뽑습니다. 시간 카드는 손에 있는 카드 중앙에 순서대로 삽입됩니다.
이 두 항목을 변경하지 않고 유지하면 몇 장의 카드를 뽑더라도 마지막에 손에 있는 카드가 순서대로 정렬됩니다.
Python 구현:
def insertion_sort(n): if len(n) == 1: return n b = insertion_sort(n[1:]) m = len(b) for i in range(m): if n[0] <= b[i]: return b[:i]+[n[0]]+b[i:] return b + [n[0]]
다른 버전:
def insertion_sort(lst): if len(lst) == 1: return lst for i in xrange(1, len(lst)): temp = lst[i] j = i - 1 while j >= 0 and temp < lst[j]: lst[j + 1] = lst[j] j -= 1 lst[j + 1] = temp return lst
Python에서 삽입정렬 알고리즘을 사용한 간단한 분석과 코드예제에 대한 자세한 설명은 PHP 중국어 홈페이지를 참고해주세요!