import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 将给定数组排序
* @param arr int整型一维数组 待排序的数组
* @return int整型一维数组
*/
public static void pile(int[] arr, int n, int len){ //维护堆(大根堆)
int i = n;
if ((n*2+1 < len) && (arr[i] < arr[n*2+1])){
i = n * 2 + 1;
}
if ((n*2+2 < len) && (arr[i] < arr[n*2+2])){
i = n * 2 + 2;
}
if (i != n){
arr[i] = arr[i] ^ arr[n];
arr[n] = arr[i] ^ arr[n];
arr[i] = arr[i] ^ arr[n];
pile(arr, i, len);
}
}
public int[] MySort (int[] arr) {
// write code here
int len = arr.length;
//创建堆
for (int i = len/2-1; i >= 0; i--){
pile(arr, i, len);
}
//排序
while(len > 1){
arr[0] = arr[0] ^ arr[len-1];
arr[len-1] = arr[0] ^ arr[len-1];
arr[0] = arr[0] ^ arr[len-1];
len--;
pile(arr, 0, len);
}
return arr;
}
}