상용 정렬 알고리즘 구현 정렬 (Insertion Sort)
예제 코드
void InsertSort(int array[], int length)
{
int i, j, key;
for (i = 1; i < length; i++)
{
key = array[i];
// i array[i]
for (j = i - 1; j >= 0 && array[j] > key; j--)
{
array[j + 1] = array[j];
}
//
array[j + 1] = key;
}
}
알고리즘 복잡 도
만약 에 목표 가 n 개 요소 의 서열 을 정렬 하 는 것 이 라면 삽입 정렬 을 사용 하 는 것 이 가장 좋 은 상황 과 최 악의 상황 이 존재 합 니 다.가장 좋 은 상황 은 서열 이 이미 오름차 순 으로 배열 되 었 다 는 것 이다. 이런 상황 에서 진행 해 야 할 비교 작업 은 (n - 1) 회 만 있 으 면 된다.최 악의 경우 서열 이 내림차 순 으로 배열 되 어 있 으 면 이때 진행 해 야 할 비 교 는 모두 n (n - 1) / 2 회 이다.정렬 을 삽입 하 는 할당 작업 은 비교 작업 횟수 에 (n - 1) 회 입 니 다.평균 적 으로 정렬 알고리즘 을 삽입 하 는 복잡 도 는 O (n2) 이다.따라서 삽입 정렬 은 데이터 양 이 많은 정렬 에 적합 하지 않다.그러나 정렬 이 필요 한 데 이 터 는 양 이 적 습 니 다. 예 를 들 어 양 이 천 보다 적 으 면 정렬 을 삽입 하 는 것 이 좋 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Codility Lesson3】FrogJmpA small frog wants to get to the other side of the road. The frog is currently located at position X and wants to get to...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.