高手讲解下算法导论中... 【堆排序法and线性时间排序】并写下java的代码,小弟初学的..添加个注释....谢谢了... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 // 堆排序 public static void heapSort(int[] arr) { for (int i = arr.length / 2; i >= 0; i--) { maxHeap(arr, i, arr.length); } for (int i = arr.length - 1; i >= 1; i--) { arr[0] ^= arr[i]; arr[i] ^= arr[0]; arr[0] ^= arr[i]; maxHeap(arr, 0, i); } } // 建最大堆 private static void maxHeap(int[] arr, int index, int end) { int q; while (index < end) { q = 2 * index + 1; if (q >= end) break; if ((q < end - 1 && (arr[q + 1] > arr[q]))) q = q + 1; // 如果某一节点的值小于其子节点的最大值,将其交换 if (arr[q] > arr[index]) { arr[q] ^= arr[index]; arr[index] ^= arr[q]; arr[q] ^= arr[index]; index = q; } else { break; } } } 用netbeans运行一个GUI程序的乱码问题?? JAVA低层挑战,有兴趣的高手来看看! 找LIST中最小值 诚信跪求一个师父 跪求!!!!! 各位帮帮忙,关于越界问题 求助~~~~~~~~~~菜鸟也可以进~~~~ 谁有好的办法? 谁使用过mysql的JDBC驱动,怎么没有办法插入中文的字段??? (SOS 在线等待,马上给分)Java -D用法问题 如何让我的浏览器支持最新版的jdk 求数据结构解惑 html中获取动态数据
// 堆排序
public static void heapSort(int[] arr) {
for (int i = arr.length / 2; i >= 0; i--) {
maxHeap(arr, i, arr.length);
}
for (int i = arr.length - 1; i >= 1; i--) {
arr[0] ^= arr[i];
arr[i] ^= arr[0];
arr[0] ^= arr[i];
maxHeap(arr, 0, i);
}
} // 建最大堆
private static void maxHeap(int[] arr, int index, int end) {
int q;
while (index < end) {
q = 2 * index + 1;
if (q >= end)
break;
if ((q < end - 1 && (arr[q + 1] > arr[q])))
q = q + 1;
// 如果某一节点的值小于其子节点的最大值,将其交换
if (arr[q] > arr[index]) {
arr[q] ^= arr[index];
arr[index] ^= arr[q];
arr[q] ^= arr[index];
index = q;
} else {
break;
}
}
}