现在的代码如下,请修改,谢谢!
void HeapSort(float num[],int size);
void BuildHeap(float num[],int size);
void PercolateDown(float num[],int index,int size);
void PrintHeap(const char* strMsg,float array[],int nLength);
void Swap(float num[],int v ,int u);
int main(int argc, char *argv[])
{
int data[13]={8,5,4,6,13,7,1,9,12,11,3,10,2};
HeapSort(data,13);
system("PAUSE");
return 0; }
void HeapSort(float num[], int size)
{
int i;
int iLength = size;
PrintHeap("Before Sort:\n",num,iLength);
BuildHeap(num,size);
for (i = iLength - 1;i >= 1; i --){
Swap(num, 0 ,i);
size--;
PercolateDown(num, 0 ,size);
}
PrintHeap("Sort Heap:\n",num,iLength);
}
void BuildHeap (float num[], int size)
{
int i;
for(i = size / 2 - 1; i >= 0; i --){
PercolateDown(num , i , size);
}
}
void PercolateDown(float num[] , int index , int size)
{
int min;
while (index*2+1 < size){
min = index*2 + 1;
if(index * 2 + 2 < size){
if(num[min] > num[index * 2 + 2]){
min = index * 2 + 2;
}
}
if (num[index] < num[min]){
break;
} else {
Swap(num, index , min);
index = min;
}
}
}
void Swap(float num[] , int v ,int u)
{
int temp = num [v];
num[v] = num[u];
num[u] = temp;
}
void PrintHeap(const char* strMsg,float array[],int nLength)
{
int i;
printf("%s",strMsg);
for(i = 1;i <= nLength; i ++){
printf("%d %f\n",i,array[i]);
}
}
前面的main函数是随便加的,其实HeapSort(float num[], int size)是我要调用的子函数,我知道要加一个数组存储序号但不知道要加在哪。。。
对了,最上边还有两个头文件= =
#include
#include
另,我后面的程序中还要用到序号,希望大神可以教我怎样把存储序号的数组传递到后面的程序中使用,谢谢!
或者您帮忙在写一个排序的子函数也行,后面能调用可以,重点是能输出排序前的序号