- 博客(31)
- 收藏
- 关注
原创 归并排序
归并排序归并排序(Merging Sort)也是一种使用分治法来实现的排序算法,它是现代计算机创始人John von Neumann于1945年发明的
2017-12-18 10:23:59
408
原创 简单选择排序
简单选择排序简单选择排序是最简单直观的一种算法,基本思想为每一趟从待排序的数据元素中选择最小(或最大)的一个元素作为首元素,直到所有元素排完为止。
2017-11-19 22:24:06
306
原创 希尔排序
希尔排序希尔排序(Shell Sort)是插入排序的一种。因 D.L.Shell 于 1959 年提出而得名。希尔排序思路基本思想:将整个待排序记录序列分割为若干个子序列,然后对每一个子序列进行直接插入排序.算法思路:先取一个正整数 d1(d1 < n),把全部记录分成 d1 个组,所有距离为 d1 的倍数的记录看成一组,然后在各组内进行插入排序然后取 d2(d2 < d1)重复上述分组和排序
2017-11-13 12:20:09
329
原创 插入排序
插入排序通常人们整理卡牌的方法是一张一张的来,将一张卡牌插入到其他已经有序的牌中适当的位置。在计算机的实现过程中,为了给插入的元素腾出空间,我们需要将其余的所有元素在插入之前都向右移动一位。这种算法叫插入算法。
2017-11-12 16:10:43
470
原创 算法时间复杂度
算法时间复杂度定义在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。
2017-11-06 17:10:32
379
原创 冒泡排序算法及优化
冒泡排序算法及优化排序算法种类:冒泡排序冒泡排序(Bubble Sort)是一种典型的交换排序算法,通过交换数据元素的位置进行排序。冒泡排序思路从序列头部开始,进行两两比较,根据大小交换位置,直到最后将最大(小)的数据元素交换到了队列的队尾,从而成为有序序列的一部分;下一次继续这个过程,直到所有数据元素都排好序。算法的核心在于每次通过两两比较交换位置,选出剩余无序序列里最大(小)的数据元素放到队尾。
2017-11-03 21:20:05
394
原创 快速排序
快速排序快速排序是每个程序员都应当掌握的排序算法。但数据量一旦超过几万,插入和冒泡的性能会非常差。这时时间复杂度的渐进优势就表现出来了。快速排序是不稳定排序,平均时间复杂度为O(n*log n),最坏情况下O(n^2),空间复杂度O(log n)。(待补充测试数据及时间复杂度的比较)
2017-10-30 11:02:54
1218
原创 id和instancetype的区别
id和instancetype的区别区别1:类型确定的时期在ARC(Auto Reference Count)环境下:instancetype:编译期确定类型。id类型:运行时确定类型。在MRC(Manual Reference Count)环境下: instancetype和id一样,不做具体类型检查。区别2:作为方法参数id可以作为方法的参数,但instancetype不可以。ins
2017-09-20 20:39:39
491
原创 浅谈block的应用与实现
浅谈Block的应用及原理1.使用:NSInteger (^mySum)(NSInteger,NSInteger) = ^(NSInteger paramA, NSInteger paramB){ return paramA + paramB;};以上定义了一个Block变量,block本来就是一个程序段,因此有返回值有输入的参数,这里这个block返回的类型是BOOL ,“^”表示bl
2017-08-25 09:58:45
549
原创 浅析栈区和堆区内存分配的区别
浅析栈区和堆区内存分配的区别一直以来总是对这个问题的认识比较朦胧,我相信很多朋友也是这样的,总是听到内存一会在栈上分配,一会又在堆上分配,那么它们之间到底是怎么的区别呢?为了说明这个问题,我们先来看一下内存内部的组织情况.从上图可知,程序占用的内存被分了以下几部分.1、栈区(stack)由编译器自动分配释放 ,存放函数的参数值,局部变量的值等,内存的分配是连续的,类似于平时我们所说的栈,如果还不清楚
2017-08-25 09:41:54
280
原创 内存检测 - instrument介绍
内存检测 - instrument关于Instrumentsinstruments 是一个强大的、灵活的 性能分析 和测试工具的Xcode工具集的一部分。它的目的是帮助您配置您的OS X和iOS应用程序、进程和设备,以便更好地理解和优化他们的行为和性能。从应用程序开发过程的开始将工具集成到您的工作流中,可以帮助您在开发周期的早期找到问题。在Instruments中,您使用专门的工具,来跟踪应用程序、
2017-08-25 09:40:42
2047
原创 内存管理 - 引用计数
内存管理 - 引用计数1.内存管理原理:引用计数引用计数发展时间轴:苹果在 2011 年的时候,在 WWDC 大会上提出了自动的引用计数(ARC)。ARC 背后的原理是依赖编译器的静态分析能力,通过在编译时找出合理的插入引用计数管理代码,从而彻底解放程序员。直到 2013 年左右,苹果认为 ARC 技术足够成熟,直接将 macOS(当时叫 OS X)上的垃圾回收机制废弃,从而使得 ARC 迅速被接受
2017-08-25 09:39:57
502
原创 【iOS报错】“Internal error. Please file a bug at bugreport.apple.com and attach "/var/folders/v5/......”
【iOS报错】“Internal error. Please file a bug at bugreport.apple.com and attach "/var/folders/v5/......”Xcode8 beta解决方法: cmd + shift + k cmd + option + shift + k Restart Xcode
2017-08-22 16:38:29
4549
原创 核心动画(三)-关键帧动画
一、简单介绍CAKeyframeAnimation是CApropertyAnimation的子类,跟CABasicAnimation的区别是:CABasicAnimation只能从一个数值(fromValue)变到另一个数值(toValue),而CAKeyframeAnimation会使用一个NSArray保存这些数值属性解析:values:就是上述的NSArray对象。
2017-07-09 23:26:40
569
原创 核心动画(二)- CABasicAnimation的基本使用方法
CABasicAnimation类的使用方式就是基本的关键帧动画。 所谓关键帧动画,就是将Layer的属性作为KeyPath来注册,指定动画的起始帧和结束帧,然后自动计算和实现中间的过渡动画的一种动画方式。CABasicAnimation的基本使用顺序1.引用QuartzCore.framework将”QuartzCore.framework”这个库添加到项目中。并且在需要使用CABaseAnim
2017-07-02 18:36:23
290
原创 升级到xcode8后,发布上传后构建版本不显示
第一次使用Xcode8发布新版本应用时,向往常一样使用 Application Loader打包上传,很快上传成功,在活动中可以看到一个构建版本正在处理中,以往这种情况只需要等半个小时左右,就会有可用的构建版本,但是这次等了一个多小时依旧没有任何提示,久违的小加号一直没有出现,再次查看活动时,发现之前正在处理的构建版本不见了,没有任何提示,查看注册开发者账号的邮箱。 才知道原来iOS10中,Appl
2017-07-02 12:52:24
600
原创 核心动画(一) - 概念篇
iOS动画-核心动画概念篇核心动画使用文档地址为:Core Animation Guide。什么是核心动画?核心动画的优点?核心动画中类的层次结构?
2017-06-26 09:34:33
544
原创 ios提审报错:No suitable application records were found. Verify your bundle identifier 'xx' is correct
ios提审报错:No suitable application records were found. Verify your bundle identifier 'xx' is correct1) 检查多个开发者账号是否提交时选择错了2) 在iTunes Connect中是否建立了bundle id对应的App
2017-05-24 14:48:27
5015
原创 Autoreleasepool的理解及原理
Autoreleasepool的理解及原理之前师父问我对autoreleasepool有什么理解?当时的并没有研究过autoreleasepool,只知道在程序启动时会建立一个autoreleasepool,但不清楚autoreleasepool运行的原理。那么今天就来总结一波。接下来将从以下几个问题出发
2017-05-17 19:07:24
1903
原创 iOS中Block的循环引用问题
iOS中Block的循环引用问题每周总结,第一周开始啦,最近在看AFNetworking源码时,看到了__strong的使用,很惭愧的说在平时开发中从来没有使用过__strong self ,除此之外,发现自己对Block的循环引用理解的也不深刻,今天就总结下block的循环引用问题AFNetworking中__strongSelf应用如下AFNetworkReachabilityS...
2017-05-14 23:16:41
417
原创 Charles的日常使用
1、Charles简单介绍Charles 是在 Mac 下常用的网络封包截取工具,在做 移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。 除了在做移动开发中调试端口外,Charles 也可以用于分析第三方应用的通讯协议。配合 Charles
2017-05-05 20:27:26
489
原创 iOS 多线程篇 --- 简单介绍
一、进程和线程1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内比如同时打开QQ、Xcode,系统就会分别启动2个进程 通过“活动监视器”可以查看Mac系统中所开启的进程2.什么是线程 1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程) 线程是进程的基本执行单元,一个进程(程序)的所有任务都在线程中执行
2017-03-27 14:52:44
280
原创 OC中的修饰符
OC中的修饰符首先从简单到复杂大致分个类方法名修饰符:getter、setter原子性修饰符:atomic|、nonatomic读写性修饰符:read、write、readonlyset属性修饰符:assign、retain、copy方法名修饰符方法名修饰符 getter和setter属性修饰符:用于设置自定义生成的getter和setter方法名,使用之后将不再使用系统默认的sett
2017-03-23 14:26:00
442
转载 被误解的 MVC 和被神化的 MVVM
转自唐巧大神博客 发表于 2015-11-02 22:06文章目录1. 被误解的 MVC1.1. MVC 的历史1.2. Controller 的臃肿问题何解?1.3. 如何对 ViewController 瘦身?1.3.1. 将网络请求抽象到单独的类中1.3.2. 将界面的拼装抽象到专门的类中1.3.3. 构造 ViewModel1.3.4. 专门构造存储类1
2017-03-05 14:43:23
466
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人