桶排序

空间换时间, 在已知取值范围的情况下为每一个值创建一个对应的标签,最后判断哪个标签被使用就可以了

//桶排序
- (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);
        }
    }
}

你可能感兴趣的:(桶排序)