컴퓨터 과학은 알고리즘과 데이터 구조의 복잡성을 이해하는 것입니다.
정렬해야 하는 항목 목록이 있지만 더 복잡한 정렬 알고리즘을 사용할 시간이나 리소스가 없습니다.
삽입 정렬은 가장 간단한 정렬 알고리즘 중 하나이지만 큰 목록의 경우 속도가 느릴 수 있습니다.
쉬운 구현과 이해는 이 방법을 프로그래머들 사이에서 선호하게 만들었습니다. 작은 목록이나 빠른 솔루션이 필요한 경우에 적합합니다.
이 블로그 게시물에서는 삽입 정렬의 시간 복잡도를 살펴보겠습니다. 이 알고리즘은 배열을 정렬하는 데 사용되며 런타임은 O(n2). 이는 배열의 크기에 따라 시간 복잡도가 증가함을 의미합니다.
그러나 이 알고리즘은 퀵정렬과 같은 다른 정렬 알고리즘보다 더 빠를 수 있습니다.
삽입 정렬이 어떻게 작동하는지 자세히 살펴보겠습니다!
삽입 정렬 알고리즘이란?
한 번에 한 요소씩 삽입 정렬은 정렬 가능한 배열을 생성하며, 이를 종종 목록이라고 합니다.
예를 들어, 정렬은 프로그램 해석에 토큰 순서가 중요한 컴파일러와 같은 복잡한 컴퓨터 프로그램에 적용됩니다.
삽입 정렬은 어떻게 작동합니까?
삽입 정렬을 사용하여 배열을 정렬할 때 알고리즘은 목록에서 가장 작은 항목을 찾아 올바른 위치에 삽입하는 것으로 시작합니다.
그런 다음 다음으로 가장 작은 항목을 찾아 올바른 위치에 삽입하는 식으로 계속됩니다.
알고리즘은 목록을 반복하면서 각 항목을 앞에 오는 항목과 비교하여 작동합니다.
항목의 순서가 잘못된 경우 알고리즘이 항목을 바꿉니다. 그런 다음 목록이 정렬되었는지 확인하고 정렬된 경우 알고리즘이 종료됩니다.
실제로 삽입 정렬은 종종 몇 줄의 코드를 사용하여 구현되므로 작은 배열을 정렬하는 데 널리 사용됩니다. 그러나 이 알고리즘을 사용할 때는 시간 복잡도를 고려해야 합니다.
예:
다음은 삽입 정렬이 작동하는 방식의 예입니다. 우리는 다음 배열을 사용할 것입니다:
1, 2, 3, 4, 5, 6
알고리즘은 목록에서 가장 작은 항목인 1을 찾는 것으로 시작합니다. 그런 다음 첫 번째 위치인 올바른 위치에 삽입합니다. 그런 다음 다음으로 가장 작은 항목인 2를 찾습니다. 두 번째 위치인 올바른 위치에 삽입합니다.
그런 다음 다음으로 작은 항목인 3을 찾습니다. 올바른 위치인 세 번째 위치에 삽입합니다.
그런 다음 다음으로 작은 항목인 4를 찾습니다. 올바른 위치인 네 번째 위치에 삽입하는 식으로 계속됩니다. 이제 목록이 정렬되었습니다!
예제에서 알고리즘이 목록을 정렬하기 위해 XNUMX번의 비교와 교환을 수행한다는 것을 알 수 있습니다. n이 걸리기 때문입니다.2 n개 항목의 목록을 정렬하기 위한 비교 및 교환. 이 경우 n=6입니다.
삽입 정렬 시간 복잡성을 개선하는 방법은 무엇입니까?
삽입 정렬의 런타임은 O(n2), 퀵소트와 같은 더 나은 정렬 알고리즘을 사용하여 개선할 수 있습니다.
Quicksort에는 O(n log n) 런타임이 있으며 이는 O(n)보다 훨씬 빠릅니다.2).
그러나 경우에 따라 삽입 정렬이 퀵 정렬보다 빠를 수 있습니다.
예를 들어 목록이 이미 정렬되어 있는 경우 삽입 정렬은 퀵 정렬보다 시간이 덜 걸립니다.
실제로 삽입 정렬은 종종 몇 줄의 코드를 사용하여 구현되므로 작은 배열을 정렬하는 데 널리 사용됩니다.
그러나 이 알고리즘을 사용할 때는 시간 복잡도를 고려해야 합니다.
시간 복잡성
최악의 경우 복잡성 O(n2):
시간 복잡도는 배열의 크기에 따라 증가합니다. n이 걸립니다2 n개 항목의 목록을 정렬하기 위한 비교 및 교환.
예를 들어, 크기가 1000인 배열이 있는 경우 알고리즘은 배열을 정렬하기 위해 1,000,000번의 비교와 교환을 수행합니다.
최상의 경우 복잡성 O(n):
시간 복잡도는 입력 배열의 크기와 같습니다. 나
t는 n개의 항목 목록을 정렬하기 위해 n번의 비교와 교환을 수행합니다. 예를 들어, 크기가 5인 배열을 생각해 보십시오. 알고리즘은 배열을 정렬하기 위해 XNUMX번의 비교와 교환을 수행합니다.
평균 케이스 복잡성 O(n2):
이 경우 시간 복잡도는 최악의 복잡도와 최선의 복잡도 사이입니다.
n이 걸립니다2 n개 항목의 목록을 정렬하기 위한 비교 및 교환.
따라서 삽입 정렬은 안정적인 정렬 알고리즘입니다.
삽입 정렬이 안정적인 이유는 무엇입니까?
삽입 정렬은 입력 배열에서 동일한 요소의 순서를 유지하기 때문에 안정적입니다.
이는 데이터 검색 또는 재무 분석과 같은 많은 응용 프로그램에서 중요합니다. 예를 들어 두 개의 숫자 목록이 있고 비교하려는 경우 요소의 순서가 유지되는지 확인해야 합니다.
목록이 정렬되지 않으면 정확하게 비교하지 않습니다.
댓글을 남겨주세요.