博客
关于我
Objective-C实现小根堆(附完整源码)
阅读量:794 次
发布时间:2023-02-20

本文共 1389 字,大约阅读时间需要 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中实现一个功能强大的小根堆。

    转载地址:http://haifk.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现skew heap倾斜堆算法(附完整源码)
    查看>>
    Objective-C实现Skip List跳表算法(附完整源码)
    查看>>
    Objective-C实现slack message松弛消息算法(附完整源码)
    查看>>
    Objective-C实现SlopeOne算法(附完整源码)
    查看>>
    Objective-C实现slow sort慢排序算法(附完整源码)
    查看>>
    Objective-C实现tanh函数功能(附完整源码)
    查看>>
    Objective-C实现z-algorithm算法(附完整源码)
    查看>>
    Objective-C实现Zeller 的同余算法 (附完整源码)
    查看>>
    Objective-C实现zellers congruence泽勒一致算法(附完整源码)
    查看>>
    Objective-C实现Zero One Knapsack零一背包计算算法(附完整源码)
    查看>>
    Objective-C实现一个Pangram字符串至少包含一次所有字母算法(附完整源码)
    查看>>
    Objective-C实现一个通用的堆算法(附完整源码)
    查看>>
    Objective-C实现一分钟倒计时(附完整源码)
    查看>>
    Objective-C实现三次样条曲线(附完整源码)
    查看>>
    Objective-C实现上传文件到FTP服务器(附完整源码)
    查看>>
    Objective-C实现两个队列实现栈算法(附完整源码)
    查看>>
    Objective-C实现两数之和问题(附完整源码)
    查看>>
    Objective-C实现中值滤波(附完整源码)
    查看>>
    Objective-C实现中文模糊查询(附完整源码)
    查看>>
    Objective-C实现串口通讯(附完整源码)
    查看>>