NSArray的排序函数

NSArray进行汉字排序 因为NSArray并不直接支持对汉字的排序,这就要通过将汉字转换成拼音完成按A~Z的排序,这看起来是个头疼的问题,因为牵扯到汉字转为拼音,kmyhy给出一个较易实现的方法,获取汉字的首字的首字母,如将“王”变成“W”.  其中他通过pinyinFirstLetter函数获取中文拼音,函数原理是:“pinyinFirstLetter基于这么一个简单的原理:我们知道,在Objective 阅读详情

sortedArrayHint

下面是官方的解释, 只能看懂这个东西是可以作为其他函数的参数用于加速排序的。

Analyzes the array and returns a “hint” that speeds the sorting of the array when the hint is supplied tosortedArrayUsingFunction:context:hint:. (read-only)

Declaration

OBJECTIVE-C

@property(readonly, copy) NSData *sortedArrayHint

Import Statement

Availability

Available in iOS 2.0 and later.

以下是更多的官方解释。https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/Collections/Articles/Arrays.html

The most complex of these methods is sortedArrayUsingFunction:context:hint:. The hinted sort is most efficient when you have a large array (N entries) that you sort once and then change only slightly (P additions and deletions, where P is much smaller than N). You can reuse the work you did in the original sort by conceptually doing a merge sort between the N “old” items and the P “new” items. To obtain an appropriate hint, you use sortedArrayHint when the original array has been sorted, and keep hold of it until you need it (when you want to re-sort the array after it has been modified).

用法翻译:

sortedArrayHint 用于规模比较大的数组排序,而且是已经用其他函数排好序一次,后面对数组进行了少量的增加删除后再次排序,才可以使用。 可以在第一次排好序之后保留sortedArrayHint ,如果数组有小规模的变化(增加,删除), 下一次重新排序使用sortedArrayUsingFunction:context:hint:将会极大的提高效率。如果变化比较大,那么将不能有效的提高效率,可以采用其他排序函数。


  • 这个函数比较简单,只是有些人看不懂函数指针 NSInteger (*)(id, id, void) comparator,
  • 这个函数指针的意思就是 这个比较函数要使用一个 返回值为NSInteger 函数参数 为两个待比较对象,void*是一个自定义的对象,如果这个函数支持额外的比较参数,比如说 字符串忽略大小写比较等等。 void*的实参由context 实参传入。另外注意这个返回值虽然定义为NSInteger,但是却限定返回值只能为
  • 升序 NSOrderedAscending,相等NSOrderedSame, 降序NSOrderedDescending
  • Returns a new array that lists the receiving array’s elements in ascending order as defined by the comparison function comparator.

    Declaration

    OBJECTIVE-C

    - (NSArray *)sortedArrayUsingFunction:(NSInteger (*)(id,
                                                    id,
                                                    void *)
    )comparator
                                  context:(void *)context

    Discussion

    The new array contains references to the receiving array’s elements, not copies of them.

    The comparison function is used to compare two elements at a time and should return NSOrderedAscendingif the first element is smaller than the second, NSOrderedDescending if the first element is larger than the second, and NSOrderedSame if the elements are equal. Each time the comparison function is called, it’s passed context as its third argument. This allows the comparison to be based on some outside parameter, such as whether character sorting is case-sensitive or case-insensitive.

    //2.找出数组中最长的字符串(10分)
    //
    //数组中的元素都是字符串,返回其中最长字符串的地址
    
    NSInteger compareLengthOfStr(NSString* str1,NSString* str2,void* option)
    {
        if ([str1 length] < [str2length]) {
            returnNSOrderedDescending;
        }
        else if([str1 length] == [str2 length]) {
            returnNSOrderedSame;
        }
        else
        {
            returnNSOrderedAscending;
        }
    }
    
    -(NSString *)longestStringInArray:(NSArray *)arr
    {
        NSArray * sortedArray = [arrsortedArrayUsingFunction:compareLengthOfStrcontext:nil];
        NSString* returnStr = [sortedArray[0] retain];
        return [returnStr autorelease];
    }



【AI智能体】Langchain 主流大模型调用与对话API使用详解 【AI大模型】Langchain 模型调用与对话API使用详解 阅读详情

相关推荐

七星棋牌顶级运营产品全开源修复版源码教程:6端支持,200+子游戏玩法,完整搭建指南(含代码解析)

让您从源码下载到本地运行一步到位!此外,文中还将附带详细代码解析与操作步骤,即便没有开发经验,也能轻松完成二开与定制。数据库是棋牌游戏中极为关键的组成部分,用于存储用户信息、乐豆余额、游戏记录、提现申请等数据。以下是部分核心数据表结构示例,便于存储用户信息与游戏记录。AI模块能够控制游戏中的胜率,常用于调节玩家体验。防沉迷功能旨在限制未成年人游戏时间。的完整搭建流程,特别适合。首先,获取七星棋牌源码。本教程将为您详细讲解。

aa2031171的博客 7771

iOS7: 漫谈基础集合类(NSArray, NSSet, NSOrderedSet 和 NSDictionary)

基础集合类是每一个Mac/iOS应用的基本组成部分。在本文中,我们将对”老类”(NSArray,NSSet)和”新类”(NSMapTable, NSHashTable,NSPointerArray)进行一个深入的研究,探索每一个的效率细节,并讨论其使用场景。   提示:本文包含一些参照结果,但它们并不意味着绝对精确,也没有进行多个、复杂的测试。这些结果的目的是给出一个快速和主要的运行时统计。

NightWish 3075

瑞数6.5逆向实战:手把手教你用RPC搞定cookie sign加密(附环境补全技巧)

本文深入解析瑞数6.5逆向实战,重点探讨如何结合环境补全与RPC调用技术来应对其动态加密机制。文章详细介绍了环境指纹采集、双重验证等核心防护原理,并提供了基于Puppeteer的RPC实现方案,手把手教你搞定cookie sign加密,附有实用的环境补全技巧与完整代码示例。

weixin_29315091的博客 1272

iOS中的基础集合类

本文由 Migrant 翻译自 The Foundation Collection Classes,转载请注明出处。   NSArray, NSSet, NSOrderedSet 和 NSDictionary   基础集合类是每一个Mac/iOS应用的基本组成部分。在本文中,我们将对”老类”(NSArray, NSSet)和”新类”(NSMapTable, NSHashTable, N

billfanggs的专栏 2136

低供电电压CMOS偏置电路分析(有些类似于三支路电流源)

1、偏置电路原理图以及仿真结果 电路电流分析:Ip=Ip1=Ip2=Ip3,那么 Ip=12μnCoxWL(IpR−VTH)2 I_p=\frac{1}{2} μ_nC_{ox}\frac{W}{L} (I_{p}R-V_{TH})^2 Ip​=21​μn​Cox​LW​(Ip​R−VTH​)2 解出方程式即可得到参考电流及参考电压 2、电路电源抑制比PSRR分析 这里为了方便,小信号前都不加△ 首先做一个近似,由于gmRo>>1,直接将VDD变化导致的P3管漏级电压变化与VDD变化量做相等

qq_46579389的博客 2907

100kHz手持LCR表设计:高频阻抗测量与校准实战解析

阻抗测量是电子元件测试的基础,LCR表通过施加正弦激励并分析电压电流的幅值与相位,即可获取电容、电感、电阻的等效参数。在开关电源、无线充电等高频应用场景中,元件在100kHz下的ESR和阻抗特性尤为关键,传统10kHz手持仪表难以满足需求。本文从自动平衡桥原理出发,探讨如何将台式电桥的核心能力浓缩至手持设备,重点剖析高频寄生参数抑制、模拟链路设计、数字相敏检波算法及开路短路校准方法。通过实测数据验证,在100kHz频率下基本精度可达0.5%以内,为维修现场、产线抽检及硬件调试提供了可携带的精密测量方案。全文

weixin_33910191的博客 396

关于数组简单操作

数组对象(NSArray)    1 创建及初始化    1.1 array:方法:创建数组    1.2 arrayWithArray:方法:通过一个数组创建另一个数组    1.3 arrayWithContentsOfFile:方法:创建数组将内容设置为指定文件内容    1.4 arrayWithContentsOfURL:方法:创建数组将内容设置为url指定内容    1.5...

weixin_30597269的博客 179

柔性电极材料新突破:清华团队实现0.1mV级脑信号采集精度

清华团队的 0.1mV 级柔性电极突破,不仅是材料科学与神经工程的跨界胜利,更标志着脑机接口从 “信号采集” 向 “神经交互” 的范式转变。当电极与脑组织实现 “柔性共生”,人类首次拥有了窥探大脑微观电活动的 “精密探头”,这既是神经疾病诊疗的里程碑,更是人机融合时代的新起点。随着技术标准化与产业生态的完善,这场始于实验室的 “柔性革命”,正加速向临床病房、智能工厂、消费电子等场景渗透,为脑机接口的大规模应用铺设 “柔性跑道”。:当柔性电极实现 “神经信号的无损捕捉”,如何平衡技术创新与伦理边界?

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 2943

Objective-C:基础集合类的性能

可变性 大多数的集合类存在两个版本:可变和不可变(默认)。 不可变的集合完全是线程安全的,可以同时在多个线程中迭代,避免各种转变时出现异常的风险。你的 API绝不应该暴露一个可变的集合。 当然从不可变到可变然后再回来是会有一定代价的 — 对象必须被拷贝两次,所有集合内的对象将被 retain/release。有时在内部使用一个可变的集合,而在访问时返回一个不可变的对象副本会更高效。 其实也有同步的、线程安全的可以使用的可变集合案例,它们往往只需要用几行代码,通过子类和组合的方法建立, NSDictiona

Kingyu Luk's Blog 983

即插即用系列(代码实践) | CVPR 2025 FDConv:频域动态卷积,打破密集预测任务的参数效率瓶颈

本文提取自 CVPR 2025 的最新底层算子革新论文《Frequency Dynamic Convolution for Dense Image Prediction》。近年来,动态卷积(Dynamic Convolution)通过融合多个并行卷积核极大地提升了模型性能,但研究表明:这些并行卷积核在频域上的响应高度相似,导致了极其严重的参数浪费,且缺乏对不同频率特征的自适应能力。本文复现了该网络的核心架构——FDConv(频率动态卷积)。该方案创造性地在傅里叶域(Fourier Domain)中学习固定参

分享顶会顶刊论文即插即用模块 110

【MATLAB代码】雷达观测目标跟踪模型|H-infinity Filter(H无穷大滤波)与EKF(扩展卡尔曼滤波)的对比。附完整代码,订阅专栏后可直接查看

对比了经典扩展卡尔曼滤波(EKF)与H∞优化的EKF(H∞-EKF)在目标跟踪中的性能。通过MATLAB仿真实验,结果显示:在存在模型误差和测量噪声的情况下,H∞-EKF相比经典EKF在位置误差上降低

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 243

IOS之NSArray 中调用的方法详解(1)

下面的例子以      NSArray *array = [NSArray arrayWithObjects:@"wendy",@"andy",@"tom",@"jonery",@"stany", nil]; 1、获取数组中总共有多少个对象。 - (NSUInteger)count;     NSLog(@"%d",[array count]);   2 2、获取数组中下标对应的元素对象

shx_yi的专栏 7万+

L3自动驾驶时代,域控制器核心解析(第一篇:架构演进与五域基础)

本文作为L3域控制器系列的第一篇,核心梳理了3个关键内容:L3时代为什么必须用域控制器:解决分布式ECU的协同、算力、迭代难题;域控制器的演进路线:从分布式ECU→域集中式→中央计算平台;博世五域架构的核心解析:五大域的定位、功能与典型方案。后续将持续更新系列文章,重点覆盖:第二篇:L3对域控制器的关键技术要求(传感器、算力、线控、软件、通信);第三篇:域控制器全产业链拆解(上游芯片、中游器件、下游总成);第四篇:域控制器的产业机遇与国产替代进展。

getusushu的博客 532

NSArray中数据排序方法

1函数介绍与实例   函数一:- (void)sortUsingSelector:(SEL)comparator; 适用于数组中的元素自带比较函数时; 数组排序函数,调用该函数的对象为数组,comparator是调用该函数的数组中的元素的方法。函数参数类型为数组中的元素类型或者id类型,在调用时不需要传递参数,排序过程不可见,该函数执行时:循环取出各个元素,进行比较,然后放到合适的位置

husthlj的专栏 8502

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

NSArray的sorting排序

NSArray的排序用的挺多的,但是方法挺简单的,大概是因为ios方法本身封装好了,不需我们考虑算法的问题,只管调用就好了。 1、基本的3种: 1)-(NSArray *)sortedArrayUsingFunction:(NSInteger (*)(id, id, void *))comparator context:(void *)context ;...

bangyan8891的博客 188

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

iPhone开发笔记——NSArray 排序

转载自:http://hi.baidu.com/306996305/blog/item/6724152a9b249383033bf657.html NSArray 不能像 stl vector 那样排序,毕竟NSArray 里面存储的东西什么都有 都是NSObject嘛 但是NSArray 提供了很多接口用于排序.. 这里介绍一种. 嗯,为什么介绍这种呢,因为很像 stl 的 sort ...

weixin_30686845的博客 103

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

数组NSArray与NSMutableArray的常用方法

数组中可以放任何类型的数据,并且一个数组中的元素类型可以不一致。只要是(id类型)对象。 NSArray 1、初始化 NSArray *array = @[@"123", @"456", @2]; 2、初始化,最后需要以nil结尾 NSArray *array = [[NSArray alloc] initWithObjects:@"123", @"456", ni...

CCCCCC1990的博客 251

更多NSArray排序

[url]http://blog.ablepear.com/2011/12/objective-c-tuesdays-more-nsarray.html[/url] 上次我们讲了C数组和NSArray排序,今天我们继续讲讲使用NSSortDescriptors为NSArray排序. NSArray要求指定比较函数来完成排序.当为一些简单类型(NSString, NSDate)NSArr...

ever8182的专栏 159

NSArray 排序总结

NSArray 的排序的方法有如下:- (NSArray *)sortedArrayUsingSelector:(SEL)comparator - (NSArray *)sortedArrayUsingComparator:(NSComparator)cmptr NS_AVAILABLE(10_6, 4_0) - (NSArray *)sortedArrayUsingDescriptors:(NS

jamalping的专栏 1104

[Object C]_[初级]_[NSArray排序]

场景:根据需求让数据内的元素有序排列。 下面是具体实例说明。 ArrayObject.h #import @interface Person : NSObject { NSString *_name; NSInteger _age; } @property (readwrite, copy) NSString *_name; @property (read

moqj_123的专栏 560

NSArray数组排列

- (NSArray *)sortedArrayUsingFunction:(NSInteger (*)(ObjectType, ObjectType, void * __nullable))comparator context:(nullable void *)context; - (NSArray *)sortedArrayUsingFunction:(NSInteger (*)(Obj

DynastyTing的专栏 582

obj-c 数组排序

http://blog.ablepear.com/2011/11/objective-c-tuesdays-sorting-arrays.html  使用qsort()为C数组排序  C标准库包含一个内置的为数组排序的方法:qsort(),这是快速排序算法的一个实现。其排序之后的结果仍然放在原数组中  qsort() 的函数声明是这样:  C代码   qs

edisonkun的专栏 1486

IOS NSArray & NSDictoray -持续更新

**NSArray** **NSDictoray** **公用方法** IOS开发之将以NSDictoray组织的NSArray中以其中的NSDate大小来排序NSArray *array = [NSArray array]; [array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2){ NSNum

Gaos的BLOG 988

NSArray利用Cocoa框架进行汉字排序

NSArray利用Cocoa框架进行汉字排序 在NSString有一个函数localizedCompare:,它的功能是通过自身与给定字符串的比較,返回一个本地化的比較结果。也就是说这个函数是支持汉字比較的。 Student.h @interface Student : NSObject @property(nonatomic,co...

weixin_34218890的博客 134
上一篇: Objective-C selector 学习笔记
下一篇: MAC libXmL2安装指南
forceofwind
博客等级 码龄12年 2粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值