描述
给定一个长度为 n 的数组,请你编写一个函数,返回该数组按升序排序后的结果。
数据范围: 0≤n≤1000000,数组中每个元素都满足 0≤val≤1000000000
要求:空间复杂度 O(n)O(n),时间复杂度 O(nlogn)O(nlogn)
解题思路:重点练一下自己不熟悉的吧,今天写heapSort
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 将给定数组排序
* @param arr int整型一维数组 待排序的数组
* @return int整型一维数组
*/
public int[] MySort (int[] arr) {
// write code here
if(arr.length == 1 || arr.length == 0){
return arr;
}
heapSort(arr, arr.length);
return arr;
}
//建堆buildMaxHeap(树,节点总数)
public void buildMaxHeap(int[]tree, int n){
int last = n -1;
int parent = (last-1)/2;
for(int i = parent; i >= 0; i--){
h