Fork me on GitHub
摘要: 堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特 点快速定位指定索引的元素. (选择排序工作原理 - 第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置, 然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排 阅读全文
posted @ 2020-10-18 22:15 索智源 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 操作系统内核作业调度是优先队列的一个应用实例,它根据优先级的高低而不是先到先服务的方 式来进行调度; 如果最小键值元素拥有最高的优先级,那么这种优先队列叫作升序优先队列(即总是先删除最小 的元素),类似的,如果最大键值元素拥有最高的优先级,那么这种优先队列叫作降序优先队列 (即总是先删除最大的元素) 阅读全文
posted @ 2020-10-18 20:28 索智源 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 1. 建立堆算法实现 堆数据结构的定义 1 #define DEFAULT_CAPCITY 128 2 3 typedef struct _Heap 4 { 5 int *arr; //存储堆元素的数组 6 int size; //当前已存储的元素个数 7 int capacity; //当前存储的 阅读全文
posted @ 2020-10-18 19:46 索智源 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 1. 堆的特点: 1.1. 每个节点最多可以有两个节点 1.2. 根节点的键值是所有堆节点键值中最大者(如果是最小堆则相反),且每个节点的值都比其两个或一个子节点的值大(如果是最小堆则相反) 1.3. 除了根节点没有兄弟节点,最后一个左子节点可以没有兄弟节点,其他节点必须有兄弟节点 2. 堆的结构: 阅读全文
posted @ 2020-10-18 19:41 索智源 阅读(419) 评论(0) 推荐(0) 编辑