大顶堆和小顶堆

堆排序还是选择排序
其实大顶堆就是arr[n]>=arr[2n+1] && arr[n]>=arr[2n+2] 这个就是利用数组存储树的条件。
小顶堆是把 > 换车<即可。

堆是具有以下特点的完全二叉树
不是满足上边的第一个条件,就是满足第二个条件。

package a;

public class HeapSortDemo {
    public static void main(String[] args) {
        int[] arr = {4, 6, 5, 8, 9};
        heapSort(arr);
    }

    private static void heapSort(int[] arr) {

    }

    private static void swap(int[] arr, int index,int len) {
        int temp = arr[index];
        for(int k = index*2+1;k<len;k = k*2+1) {//已经是移动后的子节点了
            if ((k+1)<len&&arr[k] < arr[k + 1]) {
                k++;//也就是找到那个最大值。
            }

            if (arr[k] > temp) {//总是跟最初的那个值比较。也就是子节点的值
                arr[index]=arr[k];//将大的值移动到父节点
                index=k;//占领移动后的位置。
            }else {
                break;
            }
        }
        arr[index] = temp;



    }
}

这个代码用于生成大顶堆。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值