十大经典排序之堆排序

十大经典排序之堆排序
十大经典排序之堆排序

十大经典排序之堆排序#include "sort_.h"

void print_array(int *arr, int n)

// 打印数组

{

if(n==0){

printf("ERROR: Array length is ZERO\n");

return;

}

printf("%d", arr[0]);

for (int i=1; i

printf(" %d", arr[i]);

}

printf("\n");

}

void adjustHeap(int *arr, int param1, int j)

// 编程实现堆的调整

{

// 请在这里补充代码,完成本关任务

/********** Begin *********/

int temp=arr[j];

int child=2*j+1;

while(child

if((child

if(temp

{

arr[j]=arr[child];

j=child;

child=2*j+1;

}

else break;

}

arr[j]=temp;

/********** End **********/

}

int* heap_sort(int *arr, int n)

// 基于adjustHeap函数编程实现堆排序

// 函数参数:无序数组arr 数组长度n

// 函数返回值:返回从小到大排序后的数组

{

// 请在这里补充代码,完成本关任务

/********** Begin *********/

int i;

int temp;

for(i=n/2-1;i>=0;i--) adjustHeap(arr,n,i);

for(i=n-1;i>0;i--)

{

temp=arr[0];

arr[0]=arr[i];

arr[i]=temp;

adjustHeap(arr,i,0);

}

return arr;

/********** End **********/

}

相关主题
相关文档
最新文档