我正在尝试创建一个已排序的数组,但我很难理解如何创建它。 我有一个字符串(s1)和另一个数组(a1,a2,a3,....)。
我想使用字符串和数组创建一个新数组。我想把它们按顺序排列(s1 - ar - s1 - ar - s1 -ar)。
* ar =随机顺序的原始数组。
我如何创建这个数组呢?
感谢您的帮助
*编辑:我想要一个在每个备用索引处都有s1字符串的混洗数组
答案 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 *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)的
对不起如果问题措辞不当。