java大顶堆排序
程序员文章站
2024-01-25 18:25:52
...
public class Heap{ // 构造堆 public static void shift(int a[], int i, int n) { a[0] = a[i]; for(int j=i*2;j<=n;j*=2){ if(j < n && a[j]<a[j+1]){j++;} if(a[0]<a[j]) {a[i]=a[j];i=j;}else{break;} } a[i]=a[0]; } // 堆排序 public static void sort(int a[]) { int n = a.length-1; for(int i=n/2;i>0;i--) { shift(a,i,n); } for(int i=n;i>0;i--) { int temp = a[i]; a[i] = a[1]; a[1] = temp; shift(a,1,i-1); } } // a[0]用于交换使用 // 使用大顶堆进行排序 public static void main(String args[]) { int[] a = {0,1,3,5,2,9,4,67,8}; sort(a); for(int i=0;i<a.length;i++) { if(i == 0) continue; System.out.print(a[i]+" "); } } }
排序结果:1 2 3 4 5 8 9 67
上一篇: 日本公司利用无人机指导智能推土机