马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
public class P4_6 {
static final int SIZE=10;
public static void main(String[] args) {
int[] shuzu=new int[SIZE];
for(int i=0;i<SIZE;i++){
shuzu[i]=(int)(100+Math.random()*(100+1));//初始化数组
}
System.out.println("排序前的数组为");
for (int i : shuzu) { //输出未排序之前的数组
System.out.print(i+" ");
}
System.out.println();
heapsort(shuzu, SIZE); //调用方法
System.out.println("排序之后的数组为:");
for(int i=0;i<SIZE;i++){
System.out.print(" "+shuzu[i]);
}
}
static void heapsort(int[] a,int n){
int i,h,temp;
int j=0;
System.out.println("原数据构成的堆:");
for(h=0;h<n;h++){
System.out.print(a[h]+" ");
}
System.out.println();
for(i=n-1;i>0;i--){
duipai(a,i+1);
temp=a[0];
a[0]=a[i];
a[i]=temp;
System.out.print("第"+(++j)+"排序之后,数组为:");
for(h=0;h<n;h++){
System.out.print(" "+a[h]);
}
System.out.println();
}
}
static void duipai(int[] a,int n){
int i,j;
int temp;
for(i=n/2-1;i>=0;i--){
while(2*i+1<n){
j=2*i+1;
if(j+1<n){
if(a[j]<a[j+1]){
j++;
}
}
if(a[i]<a[j]){
temp=a[i];
a[i]=a[j];
a[j]=temp;
i=j;
}else{
break;
}
}
}
}
}
|