堆排序之java实现

排序算法之堆排

public class HeapSorting{
	public static int LeftChild(int i){
		return 2*i+1;
	}
	static void PercDown(int A[],int i,int N){
		int Child;
		int Tmp;
		for(Tmp=A[i];LeftChild(i)<N;i=Child){
			Child=LeftChild(i);
<pre name="code" class="java">      //如果节点包含左、右子树,且右节点大于左节点,则右子节点替换根节点
if(Child!=N-1&&A[Child+1]>A[Child])Child++;if(Tmp<A[Child])A[i]=A[Child];elsebreak;}A[i]=Tmp;} static void Heapsort(int A[],int N){int i;for(i=N/2;i>=0;i--) //构建堆PercDown(A,i,N);for(i=N-1;i>0;i--){ //“删除”最大节点Swap(A,i);PercDown(A,0,i);}}static void Swap(int Arr[],int i){int temp=Arr[0];Arr[0]=Arr[i];Arr[i]=temp;}public static void main(String[] args){int iArray[]={6,5,3,1,8,7,2,4};System.out.println("Before Sorting:");print(iArray);Heapsort(iArray,iArray.length);System.out.println("After Sorting:");print(iArray);}public static void print(int[] iArr){System.out.print("{");for(int i=0;i<iArr.length;i++){if(i<iArr.length-1)System.out.print(iArr[i]+",");elseSystem.out.print(iArr[i]);}System.out.println("}");}}

 


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值