OC 面试常见面试题:去重,排序

来源:互联网 发布:软件行业发展概况 编辑:程序博客网 时间:2024/06/05 03:22
OC 面试常见面试题:去重,排序


//去重方法一

    NSArray *array = [NSArrayarrayWithObjects:@"aa",@"bb",@"aa",nil];

    NSLog(@"array = %@",array);

    

    NSMutableArray *mArray = [NSMutableArrayarray];

    

    for (int i =0; i < array.count; i++) {

        

        if ([mArray containsObject:[array objectAtIndex:i]] ==NO) {

            [mArray addObject:[array objectAtIndex:i]];

        }

    }

        

    NSLog(@"mArray = %@",mArray);

    

    

    

    //去重方法二:(顺序有可能会变)

    NSSet *set = [NSSetsetWithArray:array];

    NSLog(@"set = %@",set);

    

    

    

    

    //排序

    NSArray *array2 = @[@5,@8,@6,@4,@2,@1,@3,@7,@9];

    

    //升序

    array2 = [array2 sortedArrayUsingSelector:@selector(compare:)];

    NSLog(@"array2 = %@",array2);

    

    //(倒序)倒过来就变成降序了

    NSMutableArray *mArray1= [NSMutableArrayarray];

    

    for (int i = (int)array2.count-1; i >-1; i--) {

//        NSLog(@"array2 = %@",array2[i]);

        //再放到数组里

        

        [mArray1 addObject:array2[i]];

    }

    NSLog(@"mArray1 = %@",mArray1);

    

    

    

    NSArray *array3 = @[@5,@8,@6,@4,@2,@1,@3,@7,@9];

    

    NSArray *array4 = [array3 sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) {

        //如果是“>”则是升序,如果是“<”则是降序

        if ([obj1 intValue] > [obj2 intValue]) {

            returnNSOrderedAscending;

        }

        else

        {

            returnNSOrderedDescending;

        }

        

    }];

    

    NSLog(@"array4 = %@",array4);

    

    

    

    //排序

    NSSortDescriptor *descriptor = [[NSSortDescriptoralloc]initWithKey:nilascending:YES];

    

    NSArray *sortArray = [NSArrayarrayWithObjects:descriptor, nil];

    

    NSArray *sortedArray = [array3 sortedArrayUsingDescriptors:sortArray];

    

    NSLog(@"sortedArray = %@",sortedArray);

    

    

    

    

    //经典冒泡排序

    NSMutableArray *mArray2 = [NSMutableArrayarrayWithArray:array2];

    

    int temp;

    for (int i =0; i < mArray2.count-1; i++) {

        for (int j =0; j < mArray2.count-1-j; j++) {

            

            if ([mArray2[j] intValue] > [mArray2[j+1] intValue]) {    //拆包

                

                temp = [mArray2[j] intValue];

                mArray2[j] = mArray2[j+1];

                mArray2[j+1] = [NSNumbernumberWithInt:temp];

                

            }

            

        }

    }

    

    NSLog(@"mArray2 = %@",mArray2);


0 0
原创粉丝点击