java堆排序

来源:互联网 发布:如何将域名指向一个ip 编辑:程序博客网 时间:2024/05/21 03:25
package sort;public class HeapSort {public static void heapSort(int[] table) {//数组长度int n = table.length;//创建最小堆for (int j = n/2-1; j >= 0; j--) {sift(table, j, n-1);}//把根节点与最后一个子节点交换,然后再进行创建最小堆for (int j = n - 1; j > 0; j--) {int temp = table[0];table[0] = table[j];table[j] = temp;sift(table, 0, j-1);}}/** * 创建最小堆 * @param table * @param low * @param high */private static void sift(int[] table, int low, int high) {int i = low;int j = 2*i + 1;int temp = table[i];while (j <= high) {if (j < high && table[j] > table[j+1]) {j++;}if (temp > table[j]) {table[i] = table[j];i = j;j = 2*i + 1;} else {j = high + 1;}}table[i] = temp;}/** * @param args */public static void main(String[] args) {int[] table = {81, 49, 76, 27, 97, 38, 49, 13, 65};heapSort(table);    //堆排序//打印for (int i = 0; i < table.length; i++) {System.out.print(table[i] + "  ");}}}

0 0
原创粉丝点击