iOS常见算法以及应用
Posted dajunjun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS常见算法以及应用相关的知识,希望对你有一定的参考价值。
算法比较
关键词
- 二分
- 递归
- 分治
- 回溯
冒泡排序
- 思想:两次循环,外层进行循环次数的控制,内层循环,进行数据之间的比较,大的数据上浮(下沉)
1 | #pragma mark - Objective-C |
快速排序
- 思想:(快速排序是基于一种叫做“二分”的思想)从数列中,挑选出一个元素作为基准,重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以放在任一边,在这个分区退出之后,该基准就处于数列的中间位置,递归的把小于基准值元素的子数列和大于基准值元素的子数列排序。
1 | /** |
选择排序
思想:首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾,以此类推,直到所有元素均排序完毕。
1 | - (void)selectSort:(NSMutableArray *)array |
插入排序
- 思想:从第一个元素开始,该元素可以认为已经被排序,取出下一个元素,在已经排序的元素序列中从后向前扫描,如果该元素(已排序)大于新元素,将该元素移到下一位置,重复以上步骤,直到找到已经排序的元素小于或者等于新元素的位置,将新元素插入到该位置中
1 | - (void)inserSort:(NSMutableArray *)array |
希尔(Shell)排序
思想:先将整个待排记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,在对全体进行一次直接插入排序。
优化:希尔排序是基于插入排序的以下两点性质而提出的改进方法的:
(1)插入排序在对几乎已经排好序的数据操作时,效率高,既可以达到线性排序的效率。
(2)但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位
OC代码实现:
1 | //希尔排序,初始的dk值为array.count/2 |
实际应用
压缩图片
1 | +(NSData *)compressImage:(UIImage *)image toByte:(NSUInteger)maxLength |
以上是关于iOS常见算法以及应用的主要内容,如果未能解决你的问题,请参考以下文章