首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在NSArray中找到NSNumbers的中值?

在NSArray中找到NSNumbers的中值,可以使用以下方法:

  1. 使用KVC(Key-Value Coding)方法
代码语言:objc
复制
[array valueForKeyPath:@"@median.self"];
  1. 使用NSMethodSignature方法
代码语言:objc
复制
NSMethodSignature *signature = [array methodSignatureForSelector:@selector(median)];
NSInteger median = [signature median];
  1. 实现一个方法来计算中值
代码语言:objc
复制
@implementation NSNumber (Median)

- (double)median {
    NSUInteger count = [self count];
    if (count == 0) {
        return 0;
    }
    NSUInteger middle = count / 2;
    NSUInteger lower = 0;
    NSUInteger upper = count - 1;
    while (lower < upper) {
        NSUInteger mid = (lower + upper) / 2;
        NSUInteger countMid = [self countBetween:lower and:mid];
        NSUInteger countHigher = [self countBetween:mid and:upper];
        if (countMid < countHigher) {
            lower = mid + 1;
        } else {
            upper = mid;
        }
    }
    return (double)lower + (double)count / 2;
}

@end
  1. 使用上述方法获取中值
代码语言:objc
复制
NSNumber *medianNumber = [array median];
double median = [medianNumber doubleValue];

以上方法中,方法1和方法2可以快速找到中值,但需要遍历数组,时间复杂度为O(n)。方法3可以实现较高效的中值计算,时间复杂度为O(1),但需要实现一个方法。方法4是直接使用NSNumber的实例方法获取中值,简单高效,但需要先遍历数组获取NSNumber对象。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

何在打杂数据工作中找到可以展示亮点?

这些数字一方面可以让面试官了解你工作成果,一方面也能了解你遇到困难。 因此,居士要分享第二个技巧就是:多用数据来描述你项目难度和成果!...居士之前面过一位童鞋,他简历里面没有特别大项目经历,甚至连前面居士提到点也没有写,但是他简历却给居士留下了很深印象。第一反应就是这位同学很善于思考和总结。...通过对广告点击和非点击用户画像分析和历史行为对比,发现非点击用户设备类型、app版本等特征有明显不同,并通过对当前广告策略分析对比发现,该在19年9月份后上线三款广告策略中,会对部分型号设备和...0xFF 总结 一段优质项目经历和工作总结,不一定是高大上公司级项目(如果有,当然是最好),它可以体现在多个点: 清晰项目背景和目标描述 可以量化工作量和项目成果 走心项目思考和尝试 当然也可以是...: 项目中遇到困难和解决思路 项目优化跟进 那么,看完了这篇文章你,有什么建议可以给我们分享吗?

1.2K50

何在keras中添加自己优化器(adam等)

2、找到keras在tensorflow下根目录 需要特别注意是找到keras在tensorflow下根目录而不是找到keras根目录。...一般来说,完成tensorflow以及keras配置后即可在tensorflow目录下python目录中找到keras目录,以GPU为例keras在tensorflow下根目录为C:\ProgramData...优化器用法 优化器 (optimizer) 是编译 Keras 模型所需两个参数之一: from keras import optimizers model = Sequential() model.add...# 传入优化器名称: 默认参数将被采用 model.compile(loss=’mean_squared_error’, optimizer=’sgd’) 以上这篇如何在keras中添加自己优化器...(adam等)就是小编分享给大家全部内容了,希望能给大家一个参考。

44.9K30

软件设计艺术:如何在技术标准海洋中找到自己航向

下面,我将通过一个简化例子,帮助大家理解如何在面对众多技术标准和设计模式时做出选择。...理解软件设计技术标准挑战 软件设计技术标准包括了各种原则、模式和实践,比如SOLID原则、设计模式(工厂模式、策略模式等)、架构风格(微服务、单体应用等)。...这些标准目的是帮助开发者构建可维护、可扩展和高效软件系统。但由于每个项目的需求、团队技术栈和业务领域不同,没有一套万能规则可以适用于所有情况。...在线书店业务复杂度和预期用户量是决定架构风格关键因素。 原则和模式选择性应用:没有必要在每个地方都应用设计模式或严格遵循某一原则。关键是识别出哪些场景下应用特定模式或原则能带来最大价值。...通过深入理解业务需求、适时地应用设计原则和模式、持续地评估和调整,我们可以有效地解决设计中遇到挑战。希望这篇文章能帮助读者更好地理解如何在软件设计过程中做出决策。

8510

漫画:如何在数组中找到和为 “特定值” 两个数?

我们来举个例子,给定下面这样一个整型数组(题目假定数组不存在重复元素): 我们随意选择一个特定值,比如13,要求找出两数之和等于13全部组合。...由于12+1 = 13,6+7 = 13,所以最终输出结果(输出是下标)如下: 【1, 6】 【2, 7】 小灰想表达思路,是直接遍历整个数组,每遍历到一个元素,就和其他元素相加,看看和是不是等于那个特定值...第1轮,用元素5和其他元素相加: 没有找到符合要求两个元素。 第2轮,用元素12和其他元素相加: 发现12和1相加结果是13,符合要求。 按照这个思路,一直遍历完整个数组。...在哈希表中查找1,查到了元素1下标是6,所以元素12(下标是1)和元素1(下标是6)是一对结果: 第3轮,访问元素6,计算出13-6=7。...在哈希表中查找7,查到了元素7下标是7,所以元素6(下标是2)和元素7(下标是7)是一对结果: 按照这个思路,一直遍历完整个数组即可。

3K64

何在电脑成千上万支文件中找到想要文件?

import os def findfiles(name, path): # 定义保存查找结果数组 search_result = [] # 利用os.walk函数遍历路径下所有文件...,一个是os模块walk函数,一个是内置函数enumerate。...(列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。...就是在for循环里用enumerate作用一个可遍历对象,不但会返回对象里每个值,还会返回值对应下标,有时候我们需要用到值对应下标,所以就会使用enumerate函数,写段小代码演示下 names...区别就是,os.listdir只会返回当前路径下所有文件夹和所有文件,不会继续再深入下一层文件夹继续查找。

1.1K20

何在 40 亿个非负整数中找到所有未出现数?

题目是这样: image.png 大数据小内存问题,很容易想到位图法 image.png 所以,如果一个区间填不满,也就意味着这个区间缺少了数,我们把这些区间拿出来,再依次按照位图法那一套处理下,...就能得到这些区间中未出现数。...具体过程如下: image.png image.png 如果 num 在第 1 区间上,将 bitArr[num - 2^26 * 1] 值设置为 1 这样,遍历完之后,在 bitArr 上必然存在没被设置成...1 位置,假设第 i 个位置上值仍然是 0,那么 2^26× 1 + i 这个数就是一个没出现过数 总结来说,其实就是区间计数 + 位图法,对计数不足区间执行位图法 心之所向,素履以往,我是小牛肉

38420

漫画:如何在数组中找到和为 “特定值” 三个数?

这一次,我们把问题做一下扩展,尝试在数组中找到和为“特定值”三个数。 题目的具体要求是什么呢?给定下面这样一个整型数组: ? 我们随意选择一个特定值,比如13,要求找出三数之和等于13全部组合。...小灰思路,是把原本“三数之和问题”,转化成求n次“两数之和问题”。 ?...我们以上面这个数组为例,选择特定值13,演示一下小灰具体思路: 第1轮,访问数组第1个元素5,把问题转化成从后面元素中找出和为8(13-5)两个数: ? 如何找出和为8两个数呢?...按照上一次所讲,我们可以使用哈希表高效求解: ? 第2轮,访问数组第2个元素12,把问题转化成从后面元素中找出和为1(13-12)两个数: ?...这样说起来有些抽象,我们来具体演示一下: 第1轮,访问数组第1个元素1,把问题转化成从后面元素中找出和为12(13-1)两个数。 如何找出和为12两个数呢?

2.3K10

保守式 GC 与准确式 GC,如何在中找到某个对象具体位置?

,那么如何在中找到这个对象具体位置呢(也称为对象访问定位)?...对象访问定位方式是由虚拟机 GC 具体实现来决定,保守式 GC 使用对象访问定位方式是使用句柄访问,准确式 GC 使用对象访问定位方式是直接指针访问。...,增加了中间层句柄池,栈中所有引用都指向这个句柄池中地址,然后再从句柄池中找到实际对象,但是这样占用了堆空间并且降低了访问效率,需要两次才能访问到真正对象。...123456 内存地址引用类型还是一个数值为 123456 整数,准确分辨出哪些内存是引用类型,这也是在垃圾收集时准确判断堆上数据是否还可能被继续使用前提。...---- 最后放上这道题背诵版: 面试官:讲一下对象访问定位方式 小牛肉:对象访问定位方式是由虚拟机 GC 具体实现来决定,保守式 GC 使用对象访问定位方式是使用句柄访问,准确式 GC

95040

Unity3D 入门:如何在脚本中找到游戏对象父子级祖孙级对象和它们组件

在真正能玩游戏场景中,很多脚本执行是在不确定游戏对象上进项,于是会考虑在父对象或者子对象上去写脚本。这时,可能需要查找游戏对象。那么如何在脚本中找到父子游戏对象(gameObject)呢?...在为游戏对象创建脚本时候,这个脚本中类会继承自 MonoBehavior: 1 2 3 4 5 6 7 8 9 10 11 12 using UnityEngine; public class WindowUpdater...对于泛型方法,每个子对象只会找到一个组件,所以通常适用于子组件非常简单场景。...,同时有更好阅读体验。...欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后作品务必以相同许可发布。

37840

iOS PerformSelector 遗漏问题

三 异步执行 如何在不使用GCD和NSOperation情况下,实现异步线程?...这个时候已经没有时间吐槽了只能接着想了…后来后来我在perSelector相关方法中找到了解答: ① performSelectorInBackground 后台执行 [self performSelectorInBackground...但是这种方式并不是oc封装方法所以使用十分不方便。 网上第二种方法其实也是以NSArray形式传值,然后创建NSInvocation方式,将参数一一绑定。...而且本质上还是就NSArray进行转发。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。...发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

44610

「多图警告」手撕排序算法 - iOS进阶必备

代码实现: + (NSArray *)bubbleSort:(NSArray *)unsortDatas { NSMutableArray *unSortArray = [unsortDatas...空间复杂度:由于整个排序过程是在原数据上进行操作,故为 O(1); 时间复杂度:由于嵌套了 2 层循环,故为 O(n*n); 选择排序 选择排序思想是,依次从「无序列表」中找到一个最小元素放到「有序列表...1, 4, 6, 2, 3, 5, 4 ] 为例,第一次找到最小元素 1 与 8 进行交换,这时有列表 A = [1], 无序列表 B = [8, 4, 6, 2, 3, 5, 4];第二次从 B 中找到最小元素...代码实现: + (NSArray *)seelectSort:(NSArray *)unsortDatas { NSMutableArray *unSortArray = [unsortDatas...,相同元素不会改变位置,故为稳定排序; 空间复杂度:它是在原序列进行排序,故为 O ( 1 ); 时间复杂度:排序过程中,首先要遍历所有的元素,然后在已排序序列中找到合适位置并插入。

88420
领券