- // 现在有一个有序的数组,要求用户输入一个整数放到数组中还保证这个数组是有序的。例如原数组为@[@1,@3,@5,@7,@9]; 插入8之后为@[@1,@3,@5,@7,@8,@9];(Objective-C)
- //1 3 5 7 9 9 7 5 3 1
- #import <Foundation/Foundation.h>
- int main(int argc, const char * argv[]) {
- @autoreleasepool {
- //初始的有序数组
- NSMutableArray *arr = [NSMutableArray arrayWithObjects:@1,@3,@5,@7,@9,nil ];
- //提示用户输入一个整数
- printf("请输入一个整数\n");
- int num = 0;
- scanf("%d",&num);
- //将新输入的插入到原数组中。已知原数组是有序的,因此只需要从头开始比较一遍就好了
- //先判断好原数组是升序的还是降序的,用前一个的值减去后一个
- int flag =[[arr objectAtIndex:0] intValue]-[[arr objectAtIndex:1] intValue];
- for(int i =0;i<[arr count];i++)
- {
- //临时保存从原数组中读出来的数字
- int tp1 = [[arr objectAtIndex:i] intValue];
- //升序的情况(0为特殊情况,一并处理了)
- if(flag<=0)
- {
- //只要满足num小于当前数字就好了。将num对象化后插入
- if(num<=tp1)
- {
- [arr insertObject:([NSNumber numberWithInt:num]) atIndex:(i)];
- //终止循环
- break;
- }
- //比所有的都大,放到最后
- else if(i==[arr count]-1)
- {
- //将num对象化后插入
- [arr insertObject:([NSNumber numberWithInt:num]) atIndex:(i+1)];
- break;
- }
- }
- //原数组降序的情况
- else
- {
- //只要满足num大于当前数字就好了。将num对象化后插入
- if(num>=tp1)
- {
- //将num对象化后插入
- [arr insertObject:([NSNumber numberWithInt:num]) atIndex:(i)];
- //终止循环
- break;
- }
- //比所有的都小,放到最后
- else if(i==[arr count]-1)
- {
- //将num对象化后插入
- [arr insertObject:([NSNumber numberWithInt:num]) atIndex:(i+1)];
- break;
- }
- }
-
- }
- //输出结果
- NSLog(@"新的数组为%@",arr);
- }
- return 0;
- }
复制代码
|
|