从字符串和数组创建排序数组

时间:2013-01-11 12:12:20

标签: iphone ios objective-c

我正在尝试创建一个已排序的数组,但我很难理解如何创建它。 我有一个字符串(s1)和另一个数组(a1,a2,a3,....)。

我想使用字符串和数组创建一个新数组。我想把它们按顺序排列(s1 - ar - s1 - ar - s1 -ar)。

* ar =随机顺序的原始数组。

我如何创建这个数组呢?

感谢您的帮助

*编辑:我想要一个在每个备用索引处都有s1字符串的混洗数组

3 个答案:

答案 0 :(得分:1)

如果我理解正确你需要创建一个新的数组,然后逐个填充它。就像插入字符串一样,然后从数组中取一个随机元素,直到元素耗尽为止。

如果你想修改原始数组,那么它必须是可变的(你使用的语言是什么?)

在objective-c中它会是这样的:

NSString* string;

NSArray* array;

NSMutableArray* temparray = [NSMutableArray arrayWithArray:array];

NSMutableArray* result = [[NSMutableArray alloc] initWithCapacity:[array count]*2];

for (int i=0; i< [array count];i++) {
    [result addObject:string];
    int index = rand() % [temparray count];
    [result addObject:[temparray objectAtIndex:index]];
    [temparray removeObjectAtIndex:index];
}

答案 1 :(得分:1)

查看NSMutableArray

NSMutableArray *array = [NSMutableArray arrayWithObjects:@"a1", @"a2", @"a3",nil];
[array insertObject:@"s1" atIndex:0]; // add as first object
[array addObject:@"s2"]; // add as last object
 // sort
[array sortUsingSelector:@selector(localizedCaseInsensitiveCompare:)];

// swap elements
[array exchangeObjectAtIndex:1 withObjectAtIndex:2];

for (NSString *s in array)
{
    NSLog(@"elemnt: %@", s);
}

答案 2 :(得分:0)

我最终洗牌并将字符串添加到每个偶数索引。

NSMutableArray *array = [NSMutableArray arrayWithObjects:@"a1", @"a2", @"a3", @"a4", @"a5",nil];

[array shuffle];
for (int i = 0 ; i<array.count; i=i+2) {
    [array insertObject:@"s1" atIndex:i];
}

NSLog(@"%@",array);

这就是我洗牌的方式

NSMutableArray+Shuffling.h

    @interface NSMutableArray (Shuffling)
    - (void)shuffle;
    @end 


NSMutableArray+Shuffling.m
#import "NSMutableArray+Shuffling.h"

@implementation NSMutableArray (Shuffling)

- (void)shuffle
{
    for (uint i = 0; i < self.count; ++i)
    {
        // Select a random element between i and end of array to swap with.
        int nElements = self.count - i;
        int n = arc4random_uniform(nElements) + i;
        [self exchangeObjectAtIndex:i withObjectAtIndex:n];
    }
}
@end

这是我输出的样子 数组(s1,     A3,     S1,     A5,     S1,     A4,     S1,     a2,     S1,     a1)的

对不起如果问题措辞不当。