IOS开发之路-Objective-C 集合下(实战2)
2013-08-06 18:58
387 查看
集合包含 数组 , 字典 , 和SET集
今天老师讲集合提到了打乱文件顺序.
于是,下午我用集合写了个打乱个打乱数组顺序的程序
主要想法就是利用 set 的不可重复性。利用随机数来打乱数组排列
实现类似洗牌发牌的原理。
程序BUG : 效率较低 如果数组较长,程序就会很耗内存。甚至卡死
运行结果:2013-08-06 18:48:50.334 打乱顺序的数组[2091:303] --------打乱前--------打乱后--------
2013-08-06 18:48:50.337 打乱顺序的数组[2091:303] ----------0------------1--------
2013-08-06 18:48:50.337 打乱顺序的数组[2091:303] ----------1------------0--------
2013-08-06 18:48:50.338 打乱顺序的数组[2091:303] ----------2------------2--------
2013-08-06 18:48:50.338 打乱顺序的数组[2091:303] ----------3------------7--------
2013-08-06 18:48:50.339 打乱顺序的数组[2091:303] ----------4------------9--------
2013-08-06 18:48:50.339 打乱顺序的数组[2091:303] ----------5------------4--------
2013-08-06 18:48:50.339 打乱顺序的数组[2091:303] ----------6------------6--------
2013-08-06 18:48:50.340 打乱顺序的数组[2091:303] ----------7------------5--------
2013-08-06 18:48:50.340 打乱顺序的数组[2091:303] ----------8------------8--------
2013-08-06 18:48:50.341 打乱顺序的数组[2091:303] ----------9------------10--------
2013-08-06 18:48:50.341 打乱顺序的数组[2091:303] ----------10------------3--------
2013-08-06 18:48:50.342 打乱顺序的数组[2091:303] ----------11------------12--------
2013-08-06 18:48:50.342 打乱顺序的数组[2091:303] ----------12------------11--------
献上代码:
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSMutableArray *array = [NSMutableArray arrayWithCapacity:100]; //创建可变数组 NSMutableArray *array2 = [NSMutableArray arrayWithCapacity:100]; NSMutableSet *set = [NSMutableSet setWithCapacity:100]; // 创建可变set集 NSMutableSet *set2 = [NSMutableSet setWithCapacity:100]; for (int i = 0; i < 13 ; i++ ) { NSNumber *number = [NSNumber numberWithInt:i]; // 对数组进行遍历输入数据 [array addObject:number]; } [set addObjectsFromArray:array]; NSLog(@"--------打乱前--------打乱后--------"); int i = 0; int count =(int )[array count]; do { int randomNumber = arc4random()% count; // 随机生成一个数 NSNumber *number = [NSNumber numberWithInt:randomNumber]; //封装为oc类型 if ( NULL == [set2 member:[array objectAtIndex:randomNumber]] ) // 判断set2是否包含 array数组上第number个元素 { [set2 addObject:number]; NSMutableString *tmpStr = [array objectAtIndex:randomNumber]; [array2 addObject:tmpStr]; i++; } } while ( 0 == [set isEqualToSet:set2] ); // 如果 两个 set集相同则结束 for ( int i = 0 ; i < [array2 count] ; i++) { NSLog(@"----------%@------------%@--------",[array objectAtIndex:i],[array2 objectAtIndex:i]); } } return 0; }
相关文章推荐
- IOS开发之路-Objective-C 集合下(实战)
- IOS开发之路-Objective-C 集合上(笔记)
- IOS开发之路-Objective-C copy(浅拷贝与深拷贝)
- IOS开发之路-Objective-C OC学习总结
- 专访实战专家 揭秘iOS神奇开发之路
- IOS开发之路-Objective-C 代码块(Block)-block计算器的实现
- IOS开发之路-Objective-C ARC入门详解
- IOS开发之路-Objective-C 继承,多态
- IOS开发之路-Objective-C 字符串
- 【学习ios之路:Objective-C】字典.集合.
- IOS开发之路-Objective-C 获得单独的年月日及星期
- 专访实战专家,揭秘iOS神奇开发之路
- 我的iOS自学之路-从零基础到企业实战开发
- 专访实战专家,揭秘iOS神奇开发之路
- 专访实战专家,揭秘iOS神奇开发之路
- IOS开发之路-Objective-C 面向对象编程基础
- 【IOS 开发学习总结-OC-28】★objective-c之foundation 框架——集合类的综述
- 专访实战专家,揭秘iOS神奇开发之路
- IOS开发之路-Objective-C 复合
- IOS开发之路-Objective-C 类目、延展、协议