十大经典排序之堆排序

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

十大经典排序之堆排序#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 **********/

}

相关文档
最新文档