목록정렬 (2)
이야기박스
두 정렬 알고리즘 모두 Priority Queue의 개념을 이용합니다. § Priority Queue ADT란?데이터 항목이 자유롭게 삽입될 수 있는 저장소, 삭제는 키 값에 의해 결정된다.여기서 키란 가장 작은것 혹은 큰것 과 같이 기준을 제시해줌. 두 정렬을 요약하자면 아래와 같습니다.- 삽입 정렬은 리스트의 값이 자신의 위치를 찾아서 들어가는 것.- 선택 정렬은 주어진 위치에 알맞은 값을 찾아서 넣는 것. § 분석- 두 정렬 모두 O()의 전체적인 수행시간을 갖는다.- 기존의 리스트를 제외하면 O(1)의 추가 상수공간만 있으면 된다. § 간단한 C 구현 코드 #include #include #include #define SIZE100 void selection(int *arr); void inser..
안녕하세요 ㅎㅎ 이번은 힙정렬의 문제를 가지고 왔습니다. 우선 힙정렬을 한 후, k번째 작은 수를 찾는 알고리즘을 만들겠습니다. 배열은 랜덤함수를 이용하여 받았습니다. 코드입니다. #include #include #include #define swap(a,b) {int t; t = a; a=b; b=t;} //a와 b를 교환, 자주 사용하기 때문에 정의하고 시작 void downHeap(int *l, int i, int n) /// 마지막노드 이후는 계산 안하게 해야함. { int *left = &l[2 * i + 1], *right = &l[(2 * i + 2)], *down, tmp; // 왼쪽 자식과 오른쪽 자식의 방의 위치 확인. if (2 * i + 2 < n) { if (*left < *rig..