
Objective-C实现小根堆(附完整源码)
发布日期:2025-04-25 22:46:25
浏览次数:3
分类:精选文章
本文共 1417 字,大约阅读时间需要 4 分钟。
Objective-C实现小根堆
在Objective-C中实现一个小根堆(Min-Heap)可以通过数组来完成。小根堆是一种完全二叉树,满足每个节点的值都小于或等于其子节点的值。以下是小根堆在Objective-C中的实现,包括插入、删除最小元素和获取最小元素的功能。
#import <Foundation/Foundation.h>
@interface MinHeap : NSObject @property (nonatomic, strong) NSMutableArray *heap; @end
插入元素
要将一个元素插入到小根堆中,可以按照以下步骤进行:
- (void)insertElement:(id)element{ [self.heap addObject:element]; int index = [self.heap indexOfObject:element]; // 获取插入位置 while (index > 0 && [self.heap[index/2] > element]) { [self.heap exchangeObjectAtIndex:index withAtIndex:index/2]; index /= 2; }}
删除最小元素
要删除最小的元素,可以使用以下方法:
- (id)extractMinimum{ if ([self.heap count] == 0) { return nil; } id min = [self.heap firstObject]; [self.heap removeObjectAtIndex:0]; int lastIndex = [self.heap count] - 1; int parentIndex = 0; while (lastIndex > 0 && [self.heap[parentIndex] > [self.heap[lastIndex]]) { [self.heap exchangeObjectAtIndex:parentIndex withAtIndex:lastIndex]; lastIndex /= 2; parentIndex = lastIndex / 2; } return min;}
获取最小元素
要获取当前堆中的最小元素,可以直接访问堆的第一个元素:
- (id)peekMinimum{ return [self.heap firstObject];}
代码解释
插入元素:首先将元素添加到堆中,然后通过循环调整元素的位置,确保每个父节点的值都小于或等于其子节点的值。
删除最小元素:删除最小的元素后,调整剩余元素的位置,确保堆的性质仍然保持。
获取最小元素:直接访问堆的第一个元素即可获取当前堆中的最小值。
小根堆的性质
小根堆的主要特点是:
- 父节点的值小于或等于子节点的值。
- 堆的结构是完全二叉树,除了最后一个叶子节点外,其他节点都有两个子节点。
通过以上方法,可以轻松地在Objective-C中实现一个功能强大的小根堆。
发表评论
最新留言
很好
[***.229.124.182]2025年05月02日 05时43分32秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【Flink】Flink 底层RPC框架分析
2019-03-06
解决:angularjs radio默认选中失效问题
2019-03-06
Hadoop学习笔记—Yarn
2019-03-06
Jenkins - 部署在Tomcat容器里的Jenkins,提示“反向代理设置有误”
2019-03-06
wxWidgets源码分析(3) - 消息映射表
2019-03-06
wxWidgets源码分析(5) - 窗口管理
2019-03-06
wxWidgets源码分析(8) - MVC架构
2019-03-06
wxWidgets源码分析(9) - wxString
2019-03-06
[梁山好汉说IT] 梁山好汉和抢劫银行
2019-03-06
[源码解析] 消息队列 Kombu 之 基本架构
2019-03-06
[源码分析] 消息队列 Kombu 之 启动过程
2019-03-06
wx.NET CLI wrapper for wxWidgets
2019-03-06
Powershell中禁止执行脚本解决办法
2019-03-06
OO_Unit2 多线程电梯总结
2019-03-06
04_Mysql配置文件(重要参数)
2019-03-06
JavaSE总结
2019-03-06
Python IO编程
2019-03-06