본문 바로가기
C언어

[C언어] 셸 정렬을 수행하는 연산을 작성하는 프로그램을 작성하시오 shellSort(int a[], int size)

by 이얏호이야호 2022. 12. 11.

공부하시는대에 도움이 됐으면 좋겠습니다.

답안코드 확인해주세요!

 

더보기
#include <stdio.h>
typedef int element;
int size;

// 부분집합에 대해 셸 정렬을 수행하는 연산
void intervalSort(element a[], int begin, int end, int interval) {
	int i, j;
	element item;
	for (i = begin + interval; i <= end; i = i + interval) {
		item = a[i];
		for (j = i - interval; j >= begin && item<a[j]; j = j - interval)
			a[j + interval] = a[j];
		a[j + interval] = item;
	}
}

void shellSort(int a[], int size) {
	int i, t, interval;
	printf("\n정렬할 원소 : ");
	for (t = 0; t<size; t++)  printf("%d ", a[t]);
	printf("\n\n<<<<<<<<<< 셸 정렬 수행 >>>>>>>>>>\n");
	interval = size / 2;
	while (interval >= 1) {
		for (i = 0; i<interval; i++)  intervalSort(a, i, size - 1, interval);
		printf("\n interval=%d >> ", interval);
		for (t = 0; t<size; t++) printf("%d ", a[t]);
		printf("\n");
		interval = interval / 2;
	}
}

void main() {
	int list[8] = { 69, 10, 30, 2, 16, 8, 31, 22 };
	size = 8;

	shellSort(list, size);

	getchar();
}


더 많은 C코드가 보고 싶다면?

https://chuinggun.tistory.com/category/C%EC%96%B8%EC%96%B4

댓글