经典的总是最好的---堆排序(严蔚敏版)

package com.test.heap;


public class HeapSort {


public static void main(String[] args) {
// TODO Auto-generated method stub
int[] datas={20,42,12,89,35,28};
HeapsSort(datas,5);
for(int i=0;i System.out.println(datas[i]);
}

public static void HeapAdjust(int[] datas,int start,int end)
{
int rc= datas[start];
for(int j=2*start;j<=end;j=j*2)
{
if(j if(rc>=datas[j])break;
datas[start]=datas[j];
start=j;
}
datas[start]=rc;
}

public static void HeapsSort(int[] datas,int n)
{
for(int i=n/2;i>=0;i--)
HeapAdjust(datas,i,n);
for(int i=n;i>=0;i--)
{
datas[0] = datas[i]+(datas[i]=datas[0])*0;
HeapAdjust(datas,0,i-1);
}
}
}

你可能感兴趣的:(经典的总是最好的---堆排序(严蔚敏版))