码迷,mamicode.com
首页 > 编程语言 > 详细

堆排序

时间:2016-10-31 21:37:31      阅读:276      评论:0      收藏:0      [点我收藏+]

标签:ring   ++   swa   span   stat   private   length   nbsp   static   

public class 堆排序 {
    void HeapSort(int[] arr) {
        for(int i = arr.length / 2; i >= 0; i--) {
            HeapAdjust(arr, i, arr.length - 1);
        }
        for(int i = arr.length - 1; i > 0; i--) {
            swap(arr, 0, i);
            HeapAdjust(arr, 0, i - 1);
        }
    }
    
    private void HeapAdjust(int[] arr, int s, int m) {
        int temp = arr[s];
        for(int j = 2 * s; j <= m; j *= 2) {
            if(j < m && arr[j] < arr[j + 1])
                ++j;
            if(temp >= arr[j])
                break;
            arr[s] = arr[j];
            s = j;
        }
        arr[s] = temp;
    }
    
    private void swap(int[] arr, int a, int b) {
        arr[a] = arr[a] ^ arr[b] ^ (arr[b] = arr[a]);
    }
    public static void main(String[] args) {
        int[] arr = {90,70,80,60,10,40,50,30,20};
        堆排序 s = new 堆排序();
        s.HeapSort(arr);
        for(int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }

    }

}

 

堆排序

标签:ring   ++   swa   span   stat   private   length   nbsp   static   

原文地址:http://www.cnblogs.com/13jhzeng/p/6017217.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!