元ネタ:4chan BBS – Genius sorting algorithm: Sleep sort
紹介されていたのは:常識を覆すソートアルゴリズム!その名も”sleep sort”!
面白そうだなぁと思ったので、Objective-c で書いてみた。
@implementation SleepSorter
- (void) doit:(id)n
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[NSThread sleepForTimeInterval:[n intValue]];
NSLog(@"%d", [n intValue]);
[pool release];
}
@end
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
id sorter = [SleepSorter alloc];
NSArray *list = [NSArray arrayWithObjects:
[NSNumber numberWithInt:3],
[NSNumber numberWithInt:1],
[NSNumber numberWithInt:8],
[NSNumber numberWithInt:7],
[NSNumber numberWithInt:2],
[NSNumber numberWithInt:4],
[NSNumber numberWithInt:9],
[NSNumber numberWithInt:6],
[NSNumber numberWithInt:0],
[NSNumber numberWithInt:5], nil];
for (id target in list) {
// [sorter doit:[target intValue]]; // 普通に呼び出す場合
[NSThread detachNewThreadSelector:@selector(doit:)
toTarget:sorter withObject:target];
}
[NSThread sleepForTimeInterval:30]; // 結果が表示する前に終わっちゃう、、、
[pool drain];
return 0;
}
ちなみに結果は、、、
実行中... 2011-05-20 12:41:10.364 Untitled[2908:4403] 0 2011-05-20 12:41:11.364 Untitled[2908:2903] 1 2011-05-20 12:41:12.364 Untitled[2908:3503] 2 2011-05-20 12:41:13.364 Untitled[2908:1303] 3 2011-05-20 12:41:14.364 Untitled[2908:3903] 4 2011-05-20 12:41:15.365 Untitled[2908:4903] 5 2011-05-20 12:41:16.364 Untitled[2908:4003] 6 2011-05-20 12:41:17.364 Untitled[2908:3103] 7 2011-05-20 12:41:18.364 Untitled[2908:2d03] 8 2011-05-20 12:41:19.366 Untitled[2908:3d03] 9 Debugger stopped. Program exited with status value:0.
おー並んでる!
配列の初期化がかっこ悪いですね、、、
各所、こうしたらスマートじゃん?みたいな指摘がありましたら、よろしくお願いします。
1 Comments.