iOS的一些算法

1.冒泡排序算法的运作:
定义:
1、比较相邻的元素,如果第一个比第二个大,就交换他们两个。
2、对每一对相邻元素作同样的工作,从开始第一个到结尾的最后一对。得出最后最大的数。
3、针对所有元素重复以上步骤,除了最后一个。
实现:

//冒泡排序 - (NSMutableArray *)createBubbingArr { NSMutableArray *array = [NSMutableArray arrayWithObjects:@1,@3,@2,@9,@11,@6,@22,@16, nil]; for (int i = 0; i < array.count - 1; i ++) { for (int j = 0; j < array.count - 1 - i; j ++) { if ([array[j] integerValue] > [array[j + 1] integerValue]) { [array exchangeObjectAtIndex:j withObjectAtIndex:j+1]; } } } return array; }

2.选择排序的运作:
定义:
1、每一次从待排序的数据中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
算法实现:
- (NSMutableArray *)createSelectArr { NSMutableArray *arr_M = [NSMutableArray arrayWithObjects:@1,@3,@2,@9,@11,@6,@22,@16, nil]; NSInteger count = 0; for (int i = 0; i< arr_M.count - 1; i++) { int minIndex = i; for (int j = i + 1; j < arr_M.count; j++) { if (arr_M[j] < arr_M[minIndex]) { minIndex = j; break; } count++; } [arr_M exchangeObjectAtIndex:i withObjectAtIndex:minIndex]; } return arr_M.mutableCopy; }

【iOS的一些算法】3.快速排序
定义:
通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
/* 快速排序 */ - (void)quickSortWithArr:(NSMutableArray *)arr leftIndex:(NSInteger)leftIndex rightIndex:(NSInteger)rightIndex {if (leftIndex >= rightIndex) { return; } NSInteger i = leftIndex; NSInteger j = rightIndex; //记录比较基数 NSInteger key = [arr[i] integerValue]; while (i < j) { //先从右边j开始查找比基数小的值 //如果比基数大,继续查找 while (i < j && [arr[j] integerValue] >= key) { j --; } //如果比基数大,则调换位置 arr[i] = arr[j]; //当右边查到一个比基数小的值,就从i开始往后找比基数大的值 //如果比基数小,继续查找 while (i < j && [arr[i] integerValue] <= key) { i ++; } //如果比基数大,则将查到大值调换到j的位置 arr[j] = arr[i]; } //一轮遍历之后,确认基数位置,并调整正确位置 arr[i] = @(key); //排序后,从基数位置将数据分为两部分,递归运算 [self quickSortWithArr:arr leftIndex:leftIndex rightIndex:i-1]; [self quickSortWithArr:arr leftIndex:i+1 rightIndex:rightIndex]; }

4.逆序
把数组中元素倒叙,iOS自带方法
//逆序 - (void)reverseSortWithMutableArray:(NSMutableArray *)arr{ NSArray *reversedArray = [[arr reverseObjectEnumerator] allObjects]; NSLog(@"倒序排序结果:%@",reversedArray); }

    推荐阅读