题解 | #排序#
排序
https://www.nowcoder.com/practice/2baf799ea0594abd974d37139de27896
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; } }