用HeapSort 排序
我發現怎麼第一個數字都沒有辦法排序到
例如 6 0 1 1 1 1 5 6 8 8 ------------> 第一個沒有排序 其他都 ok
眼睛看到快花了
可以幫我看看哪裡漏掉了嗎 ??
謝謝
#include<stdio.h>
#include<math.h>
#define FLOOR(x)((INT)x)
void MaxHeap_Heapify(int a[],int i, int n)
{
int l,r,largest,temp;
l=2*i;
r=l+1;
if(l<=n && a[l]>a[i])
largest=l;
else
largest=i;
if(r<=n && a[r]>a[largest])
largest=r;
if(largest !=i)
{
temp=a[i];
a[i]=a[largest];
a[largest]=temp;
MaxHeap_Heapify(a,largest,n);
}
}
void Build_Max_Heap(int a[],int n)
{
int i,j;
j=FLOOR((n/2));
for(i=j;j>-1;i--)
MaxHeap_Heapify(a,i,n);
}
void Heap_Sort(int a[],int n)
{
int i,temp;
Build_Max_Heap(a,n);
for(i=n;i>=2;i--)
{
temp=a[1];
a[1]=a[i];
a[i]=temp;
n=n-1;
MaxHea[_Heapify(a,1,n);
}
}
void main()
{
srand(time(NULL));
for (i=0;i<10;i++)
{
aa[i]=rand()%10;
}
Heap_Sort(aa,10);
for(i=0;i<10;i++)
{
printf("%d",aa[i]);
}
}