堆排序

作者: 黎涛note | 来源:发表于2018-06-13 18:01 被阅读0次

    一、堆排序

    堆排序是我们所掌握的重要的排序算法之一,理解并使用,可以让我们对它的了解更加深刻:

    话不多说上代码

    java
    public class HeapSort {
        private int [] a;
        
        public HeapSort(int[] a){
            this.a=a;
        }
        
        public void swap(int n,int m){
            int t;
            t=a[n];
            a[n]=a[m];
            a[m]=t;
        }
        
        public void sort(){
            int n = a.length-1;
            while(n!=0){
                while(true){
                    int p=(n-1)/2;
                    int flag=0;
                    while(p!=0){
                        if(2*p <= n && a[p] > a[2*p]){
                            swap(p,2*p);
                            flag=1;
                        }
                        if(2*p+1 <= n && a[p] > a[2*p+1]){
                            swap(p,2*p+1);
                            flag=1;
                        }
                        p--;
                    }
                    if(flag==0){
                        break;
                    }
                }
                swap(1,n);
                n--;
            }
        }
        
        public void display(){
            
            for(int i=1; i<a.length; i++){
                System.out.print(a[i]+" ");
            }
        }
        
        public static void main(String[] args){
            int[] a ={0,3,4,6,2,1,7,5,8,9};
            HeapSort h = new HeapSort(a);
            h.sort();
            h.display();
        }
     }
    

    相关文章

      网友评论

          本文标题:堆排序

          本文链接:https://www.haomeiwen.com/subject/nopftxtx.html