heapsort 관련해서 문자열 스왑해서 출력하려고하는데 오류가 나요
조회수 244회
숫자는 잘 정렬이 되는데 문자열을 함께 반환해야하는데 그게 잘 안되네요ㅜㅜ 도와주세요ㅜㅜ
#include<stdio.h>
int heap_size, arr_size;
struct Data {
int year[1024];
char name[1024];
}arr[1024];
void swap(int arr[], int a, int b) { int tmp = arr[a]; arr[a] = arr[b]; arr[b] = tmp; }
void heapify(int arr[], int p_idx, int h_size)
{
int largest = p_idx;
int l_idx = p_idx * 2 + 1;
int r_idx = p_idx * 2 + 2;
if (l_idx<h_size&&arr[l_idx]>arr[largest]) largest = l_idx;
if (r_idx<h_size&&arr[r_idx]>arr[largest]) largest = r_idx;
if (largest != p_idx) {
swap(arr, largest, p_idx);
heapify(arr, largest, h_size);
}
}
void build_heap(int arr[], int h_size)
{
for (int i = (h_size / 2) - 1; i >= 0; i--)
heapify(arr, i, h_size);
}
void heap_sort(int arr[])
{
build_heap(arr, heap_size);
for (int last_idx = heap_size - 1; last_idx >= 0; last_idx--) {
swap(arr, 0, last_idx);
heapify(arr, 0, last_idx);
}
}
void printf_arr(int arr1[],char arr2[], int size)
{
for (int i = 0; i < size; i++) {
printf("%d", arr1[i]);
printf("%s\n", arr2[i]);
}
}
int main()
{
scanf("%d", &arr_size);
heap_size = arr_size;
for (int i = 0; i < heap_size; i++) {
scanf("%d", &arr->year[i]);
scanf("%s", &arr->name[i]);
}
printf_arr(arr->year,arr->name, heap_size);
build_heap(arr->year,heap_size);
printf_arr(arr->year, arr->name, heap_size);
heap_sort(arr->year);
printf_arr(arr->year, arr->name, heap_size);
return 0;
}
입력값입니다! 10 1876 a 1875 b 1885 c 1884 d 1907 e 1905 f 1937 g 1919 h 1920 i 1940 j
댓글 입력