java堆算法_堆排序算法的实现-java

public classHeap {//This class should not be instantiated.

privateHeap() { }public static voidsort(Comparable[] pq) {int n =pq.length;//heapify phase

//从第一个非叶子节点开始对堆排序,执行完,这样堆就是有序的了

for (int k = n/2; k >= 1; k--)

sink(pq, k, n);//sortdown phase

int k =n;while (k > 1) {

exch(pq,1, k--);

sink(pq,1, k);

}

}/***************************************************************************

* Helper functions to restore the heap invariant.

***************************************************************************/

private static void sink(Comparable[] pq, int k, intn) {while (2*k <=n) {int j = 2*k;if (j < n && less(pq, j, j+1)) j++;if (!less(pq, k, j)) break;

exch(pq, k, j);

k=j;

}

}/***************************************************************************

* Helper functions for comparisons and swaps.

* Indices are "off-by-one" to support 1-based indexing.

***************************************************************************/

private static boolean less(Comparable[] pq, int i, intj) {return pq[i-1].compareTo(pq[j-1]) < 0;

}private static void exch(Object[] pq, int i, intj) {

Object swap= pq[i-1];

pq[i-1] = pq[j-1];

pq[j-1] =swap;

}//print array to standard output

private static voidshow(Comparable[] a) {for (int i = 0; i < a.length; i++) {

StdOut.println(a[i]);

}

}/*** Reads in a sequence of strings from standard input; heapsorts them;

* and prints them to standard output in ascending order.

*

*@paramargs the command-line arguments*/

public static voidmain(String[] args) {

String[] a=StdIn.readAllStrings();

Heap.sort(a);

show(a);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值