【学习笔记】数据结构——堆

其他相关知识点链接:

【学习笔记】数据结构——哈希

知识点:

  1. 堆的特点
  2. 大顶堆和小顶堆的特点
  3. 堆的相关操作
  4. 值类型和引用类型的区别
  5. 什么是多型数据结构
  6. 筛选法建堆的原理
  7. 升序排序和降序排序

知识点解答

1.堆的特点

除了最底层外,该树是完全充满的,而且是从左到右填充的完全二叉树,但不是满二叉树、排序二叉树、平衡二叉树(因为堆的左右子树的高度差并不保证小于等于1)

2.大顶堆和小顶堆的特点

大顶堆——父结点的值大于等于子结点的值

小顶堆——父结点的值小于等于子结点的值

3.堆的相关操作

建堆

public void MAX_HEAPIFY(int[] num,int i){
    int left = 2*i+1;
    int right = 2*i+2;
    int largest = i;
    if(left < num.length && num[left]>num[i]){
        largest = left;
    }
    if(right < num.length && num[right]> num[largest]){
        largest = right;
    }
    if(largest != i){
        int temp = num[i];
        num[i] = num[largest];
        num[largest]= temp;
        MAX_HEAPIFY(num,largest);
    }
}

public void BUILD_MAX_HEAP(int[] num){
    for(int i =num.length/2;i>=0;i++){
        MAX_HEAPIFY(num,i);
    }
}

时间复杂度O(n)

堆排序

public void HEAPSORT(int[] num){
    BUILD_MAX_HEAP(num,num.length);
    int heap_size = num.length;
    for(int i=num.length-1;i>0;i--){
        int temp = num[0];
        num[0] = temp;
        heap_size --;
        MAX_HEAPIFY(num,0);
    }
}

时间复杂度O(nlogn)

插入

public int[] MAX_HEAP_INSERT(int[] num,int value,int heap_size){
    if(heap_size ==0){
        int[] result = new int[heap_size+1];
        result[0] = value;
        return result;
    }
    int[] result = new int[heap_size+1];
    for(int i=0;i0){
        parent = index /2;
        if(result[parent]< result[index]){
            int temp = result[parent];
            result[parent] = result[index];
            result[index] = temp;
            index = parent;
        }else{
            break;
        }
    }
    return result;
}

时间复杂度O(nlogn)

删除

public int HEAP_EXTRACT_MAX(int[] num,int heap_size){
    if(num.length <1){
        System.out.println("heap underflow");
        return -1;
    }else{
        int max = num[0];
        num[0] = num[heap_size -1];
        heap_size --;
        return max;
    }
}

 

4.值类型和引用类型的区别

5.什么是多型数据结构

【学习笔记】数据结构——堆_第1张图片

6.筛选法建堆的原理

从第一个非叶子结点开始从下值上的下滤法建堆

7.升序排序和降序排序

分别利用大顶堆和小顶堆的结构特点

你可能感兴趣的:(学习笔记)