c - C:我该如何解决这个问题,以便我可以使用函数中的参数?
问题描述
嘿伙计们,我是 C 的新手,并且有一个任务,我需要在其中实现heapsort
对数组进行排序。我遇到的问题是我需要使用教授的void
功能来使用他的compare
和swap
功能。我创建了单独的函数以使其中一个递归。我没有想法,我的大脑被炸了,如果这很简单,我很抱歉。我的代码如下,如果您需要更多信息,请告诉我。
#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);
}
}
解决方案
推荐阅读
- android - 尝试登录时发生社交登录错误
- android - 新文本框中数据库中的值总和
- amazon-web-services - Terraform - 为 EC2 实例分配多个子网
- javascript - nodejs execsync命令失败
- java - 2个方向的3D旋转?
- android - 无法构建发布 APK - React Native/Gradle
- c++ - 如何修复 tar-bzip2-ruined 源代码编码?
- r - 尝试使用子文档编织 r markdown 时出错
- spring-boot - 我怎样才能同时拥有一致的哈希交换和主题交换功能?
- azure-active-directory - 用户缺少属性