数组随机排序(随手记)

注1:集合是无序的且不保证随机的

注2:arc4random_uniform(x),可以用来产生0~(x-1)范围内的随机数,不需要再进行取模运算

 

方法一:

- (NSMutableArray *)randomArrayFrom:(NSArray*)oldArray

{

    NSMutableArray *newArray = [NSMutableArray array];

    while (newArray.count != oldArray.count)

    {

        NSInteger randomNum = arc4random()%oldArray.count;

        id obj = oldArray[randomNum];

        if (![newArray containsObject:obj])

        {

            [newArray addObject:obj];

        }

    }

    return newArray;

}

方法二:

- (NSMutableArray *)randomArrayFrom:(NSArray*)oldArray

{

    NSMutableArray *newArray = [NSMutableArray array];

    NSMutableArray *tempArray = [NSMutableArray arrayWithArray:oldArray];

    

    for (NSInteger i=0; i<oldArray.count; i++)

    {

        NSInteger randomNum = arc4random()%tempArray.count;

        id obj = tempArray[randomNum];

        [newArray addObject:obj];

        [tempArray removeObject:obj];

    }

    return newArray;

}

方法三(官方方法,推荐使用):

//NSMutableArray

- (void)sortUsingComparator:(NSComparator NS_NOESCAPE)cmptr NS_AVAILABLE(10_6, 4_0);

//NSArray

- (NSArray<ObjectType> *)sortedArrayUsingComparator:(NSComparator NS_NOESCAPE)cmptr NS_AVAILABLE(10_6, 4_0);

- (NSArray *)randomArrayFrom:(NSArray*)oldArray

{

    return [oldArray sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {

        int seed = arc4random_uniform(2);

        if (seed)

        {

            return [obj1 compare:obj2];

        }

        else

        {

            return [obj2 compare:obj1];

        }

    }];

}

转载于:https://www.cnblogs.com/zhaobobo/p/6225964.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值