검색어 입력폼
평가점수D

[컴퓨터] C로 구현한 정렬

등록일 2004.04.08 워드파일MS 워드 (doc) | 9페이지 | 가격 700원

소개글

여러가지 정렬을 C로 구현했습니다..

목차

- 힙 정렬 (Heap Sort)
- 병합정렬 (Merge Sort)
- 카운트 정렬
- 버블정렬 (Bubble Sort)
- 선택정렬 (Select Sort)
- 개선된 선택정렬
- 삽입정렬 (Insert Sort)
- 쉘정렬 (Shell sort)
- 퀵정렬 (Quick Sort)

본문내용

- 힙 정렬 (Heap Sort)
void heap_sort(int *list, int n)
{
int i, temp;
for(i=(n/2); i>=1; i--) // 초기 히프 만들기
adjust(list, i, n);
for(i=(n-1); i>=1; i--) { // 히프 정렬의 두 번째 단계
temp = list[i+1]; // 마지막 노드와 뿌리 노드의 교환
list[i+1] = list[1];
list[1] = temp;
adjust(list, 1, i); // i개의 키에 대하여 adjust 적용
}
}

void adjust(int *list, int i, int n)
// i : adjust 알고리즘을 시작하는 노드의 인덱스
// n : 전체 노드의 개수
{
int j, k, done;

done = 0; // 아직 끝나지 않았음을 표시
k = list[i]; // 뿌리 노드의 값, 즉 옮겨야 할 원소의 값
j = 2 * i; // i 노드의 좌 자 노드

while ((j <= n) && (!done)) { // 자식노드가 있고 not done일 때까지 반복
if ( j < n) // j + 1 <= n 과 마찬가지인데 우 자 노드의 존재를 검사
if (list[j] < list[j + 1])
j ++; // 자 노드들 중 큰 노드를 선택
다운로드 맨위로