- #import <Foundation/Foundation.h>
- int main(int argc, const charchar * argv[]) {
- @autoreleasepool {
- /*
- 冒泡排序法的基本思想:(以升序为例)含有n个元素的数组原则上要进行n-1次排序。对于每一躺的排序,从第一个数开始,依次比较前一个数与后一个数的大小。
- 如果前一个数比后一个数大,则进行交换。这样一轮过后,最大的数将会出现称为最末位的数组元素。第二轮则去掉最后一个数,对前n-1个数再按照上面的步骤找出最
- 大数,该数将称为倒数第二的数组元素......n-1轮过后,就完成了排序。
- */
- /*冒泡排序 分析详解:
- 原始数据: 28, 30, 19, 2, 23
- 第一趟:
- 第一次:28, 30, 19, 2, 23
- 第二次:28, 19, 30, 2, 23
- 第三次:28, 19, 2, 30, 23
- 第四次:28, 19, 2, 23, 30
- 第二趟:
- 第一次:19, 28, 2, 23, 30
- 第二次:19, 2, 28, 23, 30
- 第三次:19, 2, 23, 28, 30
- 第三趟:
- 第一次:2, 19, 23, 28, 30
- 第二次:2, 19, 23, 28, 30
- 第四趟:
- 第一次:2, 19, 23, 28, 30
- */
- //n个元素比较n-1趟
- //每趟比较次数 = 数组元素个数 - 趟数
- NSMutableArray *numbers = [NSMutableArray arrayWithObjects:@"17",@"28",@"36",@"15",@"39", nil nil];
- NSLog(@"排序前%@",numbers);
- for (int i = 0; i < 5 - 1; i++) {
- //比较的躺数
- for (int j = 0; j < 5 - 1 - i; j++) {
- //比较的次数
- if ([numbers[j] intValue] > [numbers[j + 1] intValue]) {
- //这里为升序排序
- int temp = [numbers[j] intValue];
- numbers[j] = numbers[j + 1];
- //OC中的数组只能存储对象,所以这里转换成string对象
- numbers[j + 1] = [NSString stringWithFormat:@"%d",temp];
- }
- }
- }
- NSLog(@"排序后%@",numbers);
- }
- return 0;
- }
OC中的冒泡排序法
最新推荐文章于 2018-04-10 10:18:06 发布