空间换时间, 在已知取值范围的情况下为每一个值创建一个对应的标签,最后判断哪个标签被使用就可以了
//桶排序
- (void)bucketSortWithArray:(NSMutableArray *)arr {
// 取最大值
NSInteger max = [[arr valueForKeyPath:@"@max.intValue"] integerValue];
// 创建取值范围0~max
NSMutableArray *dataArr = [NSMutableArray arrayWithCapacity:max];
for (NSInteger i = 0; i < 1001; i ++) {
dataArr[i] = @"0";
}
for (NSInteger i = 0; i < arr.count; i ++) {
NSInteger temp = [arr[i] intValue];
dataArr[temp] = @"1";
}
for (NSInteger i = 0; i < dataArr.count; i ++) {
if ([dataArr[i] isEqualToString:@"1"]) {
NSLog(@"%ld",i);
}
}
}
网友评论