/**heapsort * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 将给定数组排序 * @param arr int整型一维数组 待排序的数组 * @param arrLen int arr数组长度 * @return int整型一维数组 * @return int* returnSize 返回数组行数 */ #include<stdio.h> #include<stdlib.h> // 打印 void printFunction( int *arr,int len){ int i = 0; while(i<len){ printf("%d\n",arr[i]); i++; } } void swap(int* a,int* b){ int tmp = *a; *a = *b; *b = tmp; } void heap_ify(int *arr,int start,int end){ int dad =start; int son = dad*2+1; while(son<= end){ if(son+1 <= end&& arr[son]<arr[son+1]){ son++; } if(arr[dad]>arr[son])return; else{ swap(arr+dad,arr+son); dad = son ; son = dad*2+1; } } } void heap_Sort(int *arr,int len){ int i ; for(i = (len-1-1)/2;i>=0;i--){ heap_ify(arr,i,len-1); } for(i = len-1;i>0;i--){ swap(arr+0,arr+i); heap_ify(arr,0,i-1); } } int* MySort(int* arr, int arrLen, int* returnSize ) { // write code here heap_Sort(arr, arrLen); *returnSize = arrLen; return arr; }