数据结构——建堆,插入,删除,堆排序c语言实现
-
堆
堆都是完全二叉树
-
堆的插入:
在数组末尾插入,然后做一轮向上调整 -
堆的删除
将数组下标为0的元素和最后一位元素进行交换,然后做一轮向下调整 -
堆的创建
找到最后一个非叶子节点,从该节点到下标为0的节点为止,做多次向下调整 -
堆的操作
/*typedef int HPDataType;
typedef struct Heap{
HPDataType *_array;
int size;
int capacity;
}Heap;*/
#include<memory.h>
#include"heap.h"
void Swap(HPDataType* array,int left,int right){
HPDataType tmp=array[left];
array[left]=array[right];
array[right]=tmp;
}
int heapEmpty(Heap* hp){
if(hp->size==0)
return 1;
else
return 0;
}
void heapPrint(Heap* hp){
if(heapEmpty(hp))
return;
int i;
for(i=0;i