-5

ソートされた配列を作成しようとしていますが、作成方法を理解するのに苦労しています。文字列 (s1) と別の配列 (a1、a2、a3、...) があります。

文字列と配列を使用して新しい配列を作成したい。s1 - ar - s1 - ar - s1 -ar の順番で並べたいと思います。

*ar = ランダムな順序の元の配列。

この配列を作成するにはどうすればよいですか?

助けてくれてありがとう

*編集: 代替インデックスごとに s1 文字列を持つシャッフルされた配列が欲しい

4

3 に答える 3

1

私が正しく理解している場合は、新しい配列を作成してから、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];
}
于 2013-01-11T12:21:21.127 に答える
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);
}
于 2013-01-11T12:35:02.257 に答える
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

これは、出力が次のように見えるものです Array (s1, a3, s1, a5, s1, a4, s1, a2, s1, a1)

申し訳ありませんが、質問の表現が不十分でした。

于 2013-01-11T13:09:45.003 に答える