首页 > 解决方案 > C:我该如何解决这个问题,以便我可以使用函数中的参数?

问题描述

嘿伙计们,我是 C 的新手,并且有一个任务,我需要在其中实现heapsort对数组进行排序。我遇到的问题是我需要使用教授的void功能来使用他的compareswap功能。我创建了单独的函数以使其中一个递归。我没有想法,我的大脑被炸了,如果这很简单,我很抱歉。我的代码如下,如果您需要更多信息,请告诉我。

#include "srt.h"

void srtheap(void *base, size_t nelem, size_t size, int (*compar)(const void *, const void *)) {
    

    return;
}

void sort(){
    n = nelem;
    for (size_t i = nelem / 2 - 1; i > -1; --i){
        maxHeap(n,i);   
    }
    for(size_t j = nelem - 1; i > 0; --i){
        char *qj = (char *)base + size * 0;
        char *qn = (char *)base + size * j;
        swap(qj, qn, size);
        
        maxHeap(j,0);
    }
}

void maxHeap(n,i){
    
    char biggest = (char *)base + size * i;
    char *ql = 2 * ((char *)base + size * i) + 1;
    char *qr = 2 * ((char *)base + size * i) + 2;
    
    if(compar(ql, biggest) > 0 && ql < nelem){
            biggest = ql;
        }else if (compar(qr, biggest) > 0 && qr < nelem){
            biggest = qr;
        }else if (biggest != i){
            swap(biggest , i, size);
            maxHeap(n,i);
        }
}

标签: cheapsort

解决方案


推荐阅读