我正在尝试创建一个排序数组,但我无法理解如何创建它。我有一个字符串 (s1) 和另一个数组 (a1,a2,a3,....)。
我想使用字符串和数组创建一个新数组。我想把它们按这个顺序排列(s1 - ar - s1 - ar - s1 -ar)。
*ar = 以随机顺序排列的原始数组。
我将如何创建这个数组?
谢谢你的帮助
*编辑:我想要一个在每个备用索引处都有 s1 字符串的洗牌数组
我正在尝试创建一个排序数组,但我无法理解如何创建它。我有一个字符串 (s1) 和另一个数组 (a1,a2,a3,....)。
我想使用字符串和数组创建一个新数组。我想把它们按这个顺序排列(s1 - ar - s1 - ar - s1 -ar)。
*ar = 以随机顺序排列的原始数组。
我将如何创建这个数组?
谢谢你的帮助
*编辑:我想要一个在每个备用索引处都有 s1 字符串的洗牌数组
如果我理解正确,您需要创建一个新数组,然后一个一个地填充它。所以就像插入字符串然后从数组中随机取一个元素,直到你用完元素。
如果要修改原始数组,则它必须是可变的(您使用的是什么语言?)
在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];
}
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);
}
我最终改组了数组并将字符串添加到每个偶数索引。
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
这就是我输出的样子 Array (s1, a3, s1, a5, s1, a4, s1, a2, s1, a1)
抱歉,如果问题措辞不当。