小顶堆排序出了点问题救助。
typedef struct
{
int r[12];
int length;
}List;
void HeapAdjust(List *L, int s, int m)
{
int temp,j;
temp=L->r[s];
for (j=2*s;j<=m;j*=2)
{
if(j<m && (L->r[j] > L->r[j+1]))
{
++j;
}
if(temp<=L->r[j]) break;
L->r[s] = L->r[j];
s=j;
}
L->r[s] = temp;
}
void HeapSort(List *L)
{
int i;
for(i=L->length/2;i>0;i--)
HeapAdjust(L,i,L->length);
}
int main(int argc, const char * argv[]) {
List a;
List *L = &a;
L->length = 11;
L->r[0]=111;
L->r[1]=333;
L->r[2]=222;
L->r[3]=666;
L->r[4]=555;
L->r[5]=999;
L->r[6]=444;
L->r[7]=777;
L->r[8]=888;
L->r[9]=101;
L->r[10]=121;
HeapSort(L);
for(int i=0;i<11;i++)
{
printf("%d\n",L->r[i]);
}
return 0;
}
代码如上 ,感觉上好像没错0 0 ,但是得到的结果
111
0
101
444
333
121
666
777
888
555
222
Program ended with exit code: 0
这个零不知道怎么回事- -,挤掉了我一个数据,
求大神帮忙看一下
{
int r[12];
int length;
}List;
void HeapAdjust(List *L, int s, int m)
{
int temp,j;
temp=L->r[s];
for (j=2*s;j<=m;j*=2)
{
if(j<m && (L->r[j] > L->r[j+1]))
{
++j;
}
if(temp<=L->r[j]) break;
L->r[s] = L->r[j];
s=j;
}
L->r[s] = temp;
}
void HeapSort(List *L)
{
int i;
for(i=L->length/2;i>0;i--)
HeapAdjust(L,i,L->length);
}
int main(int argc, const char * argv[]) {
List a;
List *L = &a;
L->length = 11;
L->r[0]=111;
L->r[1]=333;
L->r[2]=222;
L->r[3]=666;
L->r[4]=555;
L->r[5]=999;
L->r[6]=444;
L->r[7]=777;
L->r[8]=888;
L->r[9]=101;
L->r[10]=121;
HeapSort(L);
for(int i=0;i<11;i++)
{
printf("%d\n",L->r[i]);
}
return 0;
}
代码如上 ,感觉上好像没错0 0 ,但是得到的结果
111
0
101
444
333
121
666
777
888
555
222
Program ended with exit code: 0
这个零不知道怎么回事- -,挤掉了我一个数据,
求大神帮忙看一下
...全文
相关推荐
Java 堆排序实例(大顶堆、小顶堆)
下面小编就为大家分享一篇Java 堆排序实例(大顶堆、小顶堆),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
小顶堆操作
建堆 堆排序 小顶堆 算法学习用,有什么好的建议欢迎告诉我呀,先谢谢大家的帮助
ArcGIS点编号排序
ArcgiS脚本工具--点排序编号:将点按照一定的空间位置进行排序编号 。
树形选择排序算法源代码
树形选择排序的源代码; 平台:openSUSE 11.4 编译器:GCC version 4.5.1
多边形点集排序--针对凸多边形,按逆时针方向进行排序
在平面直角坐标系中,给定一个点序列,判断这些点是否能够构成凸多边形,并且按照顺时针方向输出这些点。


