Tag: heapsort

数组大小不正确

#include void Heapify(int num[], int start, int end) { int root = start; while(root*2+1<=end) { // at least one child exists int swap = root; int lchild = root*2+1; int rchild = root*2+2; if(num[swap]<num[lchild]){ swap = lchild; } if(rchild<=end && num[swap]=0){ Heapify(num,start, end); if(start==0) break; start= start-1; } } void heapsort(int num[]) { int length=sizeof(num)/sizeof(num[0]); […]

c通用的heapsort

好吧所以我需要在c中创建一个’通用’heapsort,这就是我到目前为止(我可能在代码中缺少一些结束括号,但是当我在这里移动代码时它们就丢失了) void srtheap(void *, size_t, size_t, int (*)(const void *, const void *)); void heapify(void *, size_t, size_t, size_t, int (*)(const void *, const void *)); void srtheap(void *base, size_t nelem, size_t size, int (*compar)(const void *, const void *)) { void *p1, *p2; void *last = base + (size*(nelem-1)); for (size_t curpos = nelem-1; […]

堆使用链接列表排序

我想知道是否有人曾使用链表进行堆排序,如果有人可以提供代码。 我已经能够使用数组进行堆栈操作,但是尝试在链接列表中进行操作似乎是不切实际的,只是你知道在哪里痛苦。 我必须为我正在做的项目实现链接列表,任何帮助将不胜感激。 我也在使用C.

在将其转换为排序数组时查找堆化数组,交换总数最大可能

受到这篇文章的启发,我搜索了最糟糕的heapsort案例并在cs.stackexchange.com上找到了这个问题 ,但唯一的答案并没有真正回答这个问题,所以我决定自己去挖掘它。 经过数小时的推理和编码,我已经解决了。 我认为这个问题在SO中更好,所以我在这里发布。 问题是找到包含从1到n的不同数字的堆化数组,这样当将其转换为有序数组时,所有筛选操作中的交换总数最大可能。