ios 数据结构和算法

swift-100天iOS数据结构与算法实战 100天iOS数据结构与算法实战 立即下载

仅用于个人学习记录,代码不是最优写法,只是方便记录算法思想,会持续更新


链表

1、链表

  • 查找
  • 插入
  • 移除

2、栈(先进后出,尾部添加或删除元素)

  • push(入栈)
  • pop(出栈)
  • peek(获取顶部值)

3、队列(先进先出,尾部添加元素,头部删除元素)

  • enqueue(入队)
  • dequeue(出队)
  • peek(获取顶部值)

4、双链表(与链表区别在于,双向指针)

  • 查找
  • 插入
  • 移除

5、双端队列(与栈和队列的区别,首尾都能添加元素,首尾均能出列)

  • enqueue(入队)
  • dequeue(出队)
  • peek(获取顶部值)

排序算法

  • 冒泡排序
/*
 * 冒泡排序,相邻两个对比,前者比后者大,交换位置
 *
 */

-(void)bubbleSort{
    NSMutableArray *array = [NSMutableArray arrayWithArray:@[@3,@44,@38,@5,@47,@15,@36,@26,@27,@2,@46,@4,@19,@50,@49]];
    BOOL swapped = NO;
    do {
        swapped = NO;
        for (int i = 1; i < array.count; i++) {
            NSInteger num1 = [array[i-1] integerValue];
            NSInteger num2 = [array[i] integerValue];
            if (num1 >num2) {
                [array replaceObjectAtIndex:i-1 withObject:[NSNumber numberWithInteger:num2]];
                [array replaceObjectAtIndex:i withObject:[NSNumber numberWithInteger:num1]];
                swapped = YES;
            }
        }
    } while (swapped);
    NSLog(@"冒的排序:%@",array);
}
  • 选择排序
/*
 * 选择排序,标记最小值,循环比较,替换最小值
 *
 */

-(void)selectionSort{
    NSMutableArray *array = [NSMutableArray arrayWithArray:@[@3,@44,@38,@5,@47,@15,@36,@26,@27,@2,@46,@4,@19,@50,@49]];
    NSInteger repeatTimes = array.count -1;
    int sortBeginIndex = 0;//开始对比下标
    do {
        int miniNumIndex = sortBeginIndex;
        NSInteger miniNum = [array[sortBeginIndex] integerValue];
        for (int i = sortBeginIndex +1; i < array.count; i++) {
            NSInteger selectNum = [array[i] integerValue];
            if (selectNum < miniNum) {
                miniNum = selectNum;
                miniNumIndex = i;
            }
        }
        [array replaceObjectAtIndex:miniNumIndex withObject:array[sortBeginIndex]];
        [array replaceObjectAtIndex:sortBeginIndex withObject:[NSNumber numberWithInteger:miniNum]];
        sortBeginIndex ++;
        repeatTimes --;
    } while (repeatTimes > 0);
    NSLog(@"选择排序:%@",array);
}
  • 插入排序
/*
 * 插入排序,逐个元素拿出来,与其左边元素逐个对比,碰到比该元素小的元素,则插入在对比元素后
 *
 */

-(void)insertionSort{
    NSMutableArray *array = [NSMutableArray arrayWithArray:@[@3,@44,@38,@5,@47,@15,@36,@26,@27,@2,@46,@4,@19,@50,@49]];
    int sortBeginIndex = 1;//开始对比下标
    do {
        NSInteger sortBeginNum = [array[sortBeginIndex] integerValue];
        [array removeObjectAtIndex:sortBeginIndex];
        for (int i = sortBeginIndex -1; i >= 0; i--) {
            NSInteger compareNum = [array[i] integerValue];
            if (compareNum < sortBeginNum) {
                [array insertObject:[NSNumber numberWithInteger:sortBeginNum] atIndex:i+1];
                break;
            }else{
                if (i==0) {
                    [array insertObject:[NSNumber numberWithInteger:sortBeginNum] atIndex:0];
                }
            }
        }
        sortBeginIndex ++;
    } while (sortBeginIndex < array.count);
    NSLog(@"插入排序:%@",array);
}
ios-数据结构和算法.zip 不论你是干什么开发的,数据结构和算法是去大公司必备知识,想学的同学可以星星一下这个项目:https://github.com/xiaopengmonsters/DataStructure_Algorithm 这个项目目前整理了两个算法,后面一直更新更多。大家公共学习 立即下载

相关推荐

iOS面试题系列之基础数据结构的实现

收集整理了一些常见的数据结构,以及实现源码: 可变数组、哈希表、栈、队列、LRU缓存等等。

数据结构与算法-排序(六)堆排序(Heap Sort)

摘要 堆排序需要用到一种数据结构,大顶堆。大顶堆是一种二叉树结构,本质是父节点的数大于它的左右子节点的数,左右子节点的大小顺序不限制,也就是根节点是最大的值。 这里就是不断的将大顶堆的根节点的元素和尾部元素交换,交换到大顶堆没有可以被交换的元素为止。后面再说大顶堆的逻辑。 逻辑 首先将序列通过大顶堆排序。然后不断的从堆中取出顶部元素放在尾部,直到大顶堆元素为空。 流程 对序列进行原地建堆操作 重复下面操作,直到堆元素数量为 1 交换堆顶元素与尾元素 堆的元素数量减 1 对 0 位置进行 1 次 自下.

我为双鱼狂 336

保姆级教程:DBeaver社区版安装与驱动配置(附阿里云镜像解决下载超时)

本文提供DBeaver社区版的保姆级安装教程,涵盖版本选择、安装路径设置到驱动配置优化。特别针对国内用户遇到的下载超时问题,详细介绍了如何配置阿里云镜像加速驱动下载,确保高效连接MySQL等主流数据库。

weixin_30430169的博客 479

iOS 开发中常用的排序(冒泡、选择、快速、插入、希尔、归并、基数)算法

  1、冒泡排序:   冒泡算法是一种基础的排序算法,这种算法会重复的比较数组中相邻的两个元素。如果一个元素比另一个元素大(小),那么就交换这两个元素的位置。重复这一比较直至最后一个元素。这一比较会重复n-1趟,每一趟比较n-j次,j是已经排序好的元素个数。每一趟比较都能找出未排序元素中最大或者最小的那个数字。这就如同水泡从水底逐个飘到水面一样。冒泡排序是一种时间复杂度较高,效率较低的...

316

手把手教你用Docker快速部署ZLMediaKit流媒体服务器(含WebRTC配置)

本文详细介绍了如何使用Docker快速部署ZLMediaKit流媒体服务器,并配置WebRTC功能。通过容器化部署,实现环境一致性、资源隔离和快速扩展,同时提供WebRTC专项配置、多协议推拉流实战测试及生产环境优化建议,帮助开发者高效搭建企业级流媒体平台。

agile9scrum的博客 202

电动汽车欧标直流充电标准解析

电动汽车和电动汽车充电市场是动态发展的,欧洲也正在努力部署基础设施,以支持欧洲快速增长和多样化的电动汽车充电需求。

网络安全的研究者、新能源行业的追求者 7620

iOS高级程序员进阶——基础算法篇

算法通常是指解决问题的方案和步骤,在编程中,更通俗的讲算法就是解决特定问题的一系列指令。算法要求对于一定规模内的输入,在有限时间内会获得所要求的输出。通常,一个算法的优劣由时间复杂度和空间复杂度来衡量。作为iOS开发者我们是否需要学习算法,毋庸置疑是需要的。就算是非常面向业务的开发需求,有算法基础的开发者也会编写出更加优质的代码,在输入规模扩大的情况下,这些优质的代码也会拥有更强的稳定性并使得应用程序表现出更好的性能。在笔试面试中,算法大多情况下也是必考部分。熟悉常用的基础算法是开发者的基本功。除了提高代码质量与面试加分外,学习算法也可以锻炼思维能力,提高开发者的逻辑思维能力与抽象建模能力。在技术迭代发展飞快的当今,掌握核心算法要比掌握一门应用技术更加重要。

【模型转换】将.mindir文件转换成.ms文件(Windows篇)

首先需要在MindSpore中训练好并经过评估可用的模型,可以以标准格式(例如onnx, mindir等)导出,得到.mindir模型文件(例如lenet.mindir)。为了将模型部署到自定义应用中,还需要将其转换为更为紧凑和高效的ms格式模型,用于在MindSpore-Lite环境中推理,这可以通过MindSpore Lite提供的模型转换工具converter_lite完成。

qq_42962847的博客 1425

iOS 数据结构与算法

iOS 数据结构与算法 一、数据结构 1、集合结构:无序、无重复的元素结构,可看成特殊的数组(没有顺序,并且数据元素不重复) 2、线性结构: a、集合中必然存在一个唯一的一个第一元素; b、集合中必然存在一个唯一的一个最后元素 c、除了最后一个元素之外,其他元素均有唯一的后继 d、除了第一个元素之外,其他元素均有唯一的前驱 3、树形结构:元素存在一对多的树形关系的数据结构,是重要的非线性数据结构 4、图形结构:节点的前驱和后继的个数没有限制,类似这样的结构称之为图形数据结构 二、数据

掰湘果的博客 1105

微信数据库读取解密脚本 聊天记录查看工具,支持所有微信版本,后期将支持企业微信[Windows]

(1)获取微信昵称、微信账号、微信手机号、微信邮箱、微信KEY的基址偏移(2)获取微信的微信昵称、微信账号、微信手机号、微信邮箱、微信KEY、微信原始ID(wxid_******)(3)获取微信文件夹路径(4)支持查看聊天记录查看(5)根据key解密微信数据库(6)提供数据库部分字段说明(7)支持微信多开场景,获取多用户信息等(8)微信需要登录状态才能获取数据库密钥(9)支持导出聊天记录为html,备份微信聊天记录,方便查看(10)合并多个数据库,方便查看。

weixin_43101935的博客 1万+

IC验证 AHB-RAM 项目(二)——接口与事务代码的编写

本文介绍了准备工作及接口、事务相关代码编写要点。在接口部分,重点说明了lvc_ahb_if.sv、rkv_ahbram_if.sv和rkv_ahbram_tb.sv三个关键文件的功能,其中rkv_ahbram_if.sv通过动态任务实现复位信号控制。事务部分则涉及lvc_ahb_types.sv中的枚举类型定义和lvc_ahb_transaction.sv中的随机化变量设置,用于构建AHB传输激励。整个验证环境采用模块化设计,通过接口实现TB与DUT的通信,为后续验证工作奠定基础。

weixin_45926435的博客 405

iOS面试题系列之常见算法

iOS面试中熟悉常见算法1、 对以下一组数据进行降序排序(冒泡排序)。“24,17,85,13,9,54,76,45,5,63” int main(int argc, char *argv[]) { int array[10] = {24, 17, 85, 13, 9, 54, 76, 45, 5, 63}; int num = sizeof(array)/sizeof(int);

Spencer Yang的博客 2万+

基于多模态融合的反无人机视觉跟踪算法研究

本研究提出了一种基于多模态融合的反无人机视觉跟踪算法,通过整合可见光、红外、深度等多种视觉信息源,提高了对无人机的跟踪精度和可靠性。设计并实现了多模态特征提取方法,针对不同模态图像的特点提取了有效的特征信息,为多模态融合提供了基础。研究了多种多模态融合策略,包括特征级融合、决策级融合和混合融合,并通过实验对比分析了它们的优缺点,确定了适合反无人机视觉跟踪的融合方法。选择并改进了跟踪算法,将多模态融合信息融入到跟踪过程中,提高了算法对复杂环境和无人机运动变化的适应性。

AI的内部世界的博客 1354

iOS常用算法和数据结构

iOS常用算法和数据结构 数据结构通常分为四类: 1.集合结构 线性结构 树形结构 图形结构 1.1、集合结构:就是一个集合,就是一个圆圈中有很多个元素,元素与元素之间没有任何关系 。 1.2、线性结构 :就是一个条线上站着很多个人。 这条线不一定是直的。也可以是弯的。也可以是值的 相当于一条线被分成了好几段的样子。 线性结构是一对一的关系。 1.3、树形结构 :做开发的肯定或多或少的知道xml 解析 树形结构跟他非常类似。也可以想象成一个金字塔。树形结构是一对多的关系 1.4、图形结构...

chelongfei的博客 490

手把手教你学Simulink--基于储能系统的建模与仿真场景:-锂电池储能系统充放电管理策略仿真

《锂电池储能系统充放电管理的Simulink建模与仿真》摘要 本文详细介绍了使用Simulink+SimscapeElectrical对锂电池储能系统进行充放电管理策略建模的全过程。从系统结构设计入手,重点阐述了锂电池模型、充放电控制器、热管理系统等核心模块的搭建方法,并提供了完整的仿真流程。文章详细说明了如何实现荷电状态管理、温度控制和功率限制等关键策略,通过仿真分析了电池电压、电流、SoC和温度等关键指标的变化规律。最后提出了基于仿真结果的优化建议,包括参数整定、算法改进等方面,为锂电池储能系统的安全高

MHD0815的博客 1万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

掌握Swift和iOS中的数据结构和算法

在本课程中,我将分享一些精确的解决问题的技巧,这些技巧帮助我获得了报价,并且可以帮助你在编码面试中获胜。你将学到:-数组和字符串–常见的测试问题和最佳解决方案-链接列表–掌握遍历,插入和删除技术-堆栈和队列–学习他们在编码面试中的实际应用-二叉树–获得舒适递归和树遍历算法-Big O Notation–学习如何编写高效、可扩展的代码-递归–提高算法性能的高级技术本课程专为初学者和经验丰富的开发人员设计,涵盖从基础到高级主题的所有内容。立即注册,并将您的编码面试准备工作提升到一个新的平!没有要求或先决条件!

jianqimingtian的博客 1086

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

iOS数据结构 和 算法 上

我在这里简单介绍一下 如果觉得有用尽管拷了去 数据结构 写算法之前呢,我想简单介绍一下数据结构,数据结构通常分为四类 1.集合结构 线性结构 树形结构 图形结构 这里没有图啊,大家可以抽象一下。 1.1、集合结构 说白了就是一个集合,就是一个圆圈中有很多个元素,元素与元素之间没有任何关系 这个很简单 1.2、线性结构 说白了就是一个条线上站着很多...

jueyi1127的博客 1111

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

ios math 那个头文件_iOS标准库中常用数据结构和算法之查找

啰嗦几句我本来想说的是Unix系统C标准库所提供的一些算法和数据结构API,但毕竟带有iOS标题可能更加吸引眼球一些。其实我说的也没有错,因为iOS毕竟是从Unix衍生出来的系统,所以说标题所述也算是正确的。下面将要介绍的几类API,有些可以在POSIX平台中支持,有些则只能在FreeBSD中支持,有些则只有在iOS系统中单独支持。iOS系统中的C标准库中主要提供了线性查找、二分查找、双向链表、快...

weixin_39985820的博客 97

iOS标准库中常用数据结构和算法之查找

啰嗦几句 我本来想说的是Unix系统C标准库所提供的一些算法和数据结构API,但毕竟带有iOS标题可能更加吸引眼球一些。其实我说的也没有错,因为iOS毕竟是从Unix衍生出来的系统,所以说标题所述也算是正确的。下面将要介绍的几类API,有些可以在POSIX平台中支持,有些则只能在FreeBSD中支持,有些则只有在iOS系统中单独支持。 iOS系统中的C标准库中主要提供了线性查找、二分查找、双向...

马甲包开发审核交流群:869685378 350

iOS标准库中常用数据结构和算法之排序

上一篇:iOS系统中的常用数据结构之链表

weixin_34406796的博客 184

iOS标准库中常用数据结构和算法之内存池

黑客技术点击右侧关注,了解黑客的世界!Java开发进阶点击右侧关注,掌握进阶之路!Linux编程点击右侧关注,免费入门到精通!作者丨欧阳大哥2013https://www...

iOS_开发 238

iOS标准库中常用数据结构和算法之cache

上一篇:iOS标准库中常用数据结构和算法之内存池

weixin_33774883的博客 84
上一篇: ios 枚举值 位移表示的好处
下一篇: NSdata 与 NSString,Byte数组,UIImage 的相互转换
Phyky
博客等级 码龄12年 8粉丝 31原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值