堆排序(首元空)

来源:互联网 发布:从零开始学python 编辑:程序博客网 时间:2024/06/05 08:33
public class HeapSort {public void Adjust(int[] a,int i,int size){int lchild = 2*i;int rchild = 2*i+1;int max=i;if(i<=size/2){if(lchild<=size&&a[lchild]>a[max])max=lchild;if(rchild<=size&&a[rchild]>a[max])max=rchild;if(max!=i){swap(a,i,max);Adjust(a,max,size);}}}public void Build(int[] a,int size){for(int i=size;i>0;i--)Adjust(a,i,size);}public void Sort(int[] a,int size){Build(a,size);for(int i=size;i>0;i--){swap(a,1,i);Adjust(a,1,i-1);}}private void swap(int[] a,int i, int j) {int t=a[i];a[i]=a[j];a[j]=t;}}

0 0