정렬 알고리즘 - 셸 정렬
정렬 배열 을 여러 개의 키 서열 로 나 눈 다음 에 각 키 서열 간 에 정렬 을 직접 삽입 한 다음 에 증 가 량 (즉, 길이 값) 을 줄 이 고 정렬 을 삽입 합 니 다. 서열 순서 가 기본적으로 안정 (길이 가 충분 하 다) 될 때 까지 이런 서열 에 대해 직접 정렬 을 삽입 합 니 다. 정렬 상황 이 좋 을 때정렬 을 직접 삽입 하 는 효율 은 여전히 매우 높다.
분석 하 다.
최 악의 경우 모든 숫자 는 매번 비교 하 는 과정 에서 한 번 씩 비교 되 기 때문에 최 악의 경우 시간 복잡 도 O (n2).가장 좋 은 상황 에서 한 번 만 비교 하면 서열 이 기본적으로 질서 가 있 기 때문에 그 시간 복잡 도 는 O (n) 이다.공간 복잡 도 는 O (1) 이다.
C 언어 구현
void swap(void *a, void *b, int size)
{
void *tmp = Malloc(size);
memcpy(tmp, a, size);
memcpy(a, b, size);
memcpy(b, tmp, size);
free(tmp);
}
void shell_sort(int *arr, int arrlen)
{
int i = 0, j = 0;
int gap = 0;
if(NULL == arr || 0 >= arrlen){
return ;
}
for(gap = arrlen/2; gap>0; gap /= 2){
for(i = gap; i =0; j -= gap){
if(arr[j] > arr[j + gap]){
swap(&arr[j], &arr[j + gap], sizeof(arr[j]));
}
}
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C 언어 체인 시계는 뱀을 탐식하는 작은 게임을 실현한다본고의 실례는 여러분에게 C 언어 체인표가 뱀 탐식 게임을 실현하는 구체적인 코드를 공유하여 참고하도록 하였으며, 구체적인 내용은 다음과 같다. 프로젝트 이름: 뱀놀이 운영 환경: Linux 프로그래밍 언어: C 언...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.