目标C中的Bucket Sort实现

时间:2017-12-05 17:22:20

标签: objective-c algorithm sorting bucket-sort

我一直在Objective-C(quicksort,mergesort,bubblesort)中实现不同的排序算法。但我还没有找到任何明确的Bucket Sort算法实现

我正在尝试在目标C中找到一个简单而有效的Bucket Sort算法实现。

1 个答案:

答案 0 :(得分:1)

我最终完成了自己的工作,如果有人需要的话,这是我的实施:

- (NSArray*)bucketSort:(NSArray<NSNumber*> *)array buckets:(NSInteger)k {

    // Initialize array of buckets
    NSMutableArray<NSMutableArray*> *buckets = [NSMutableArray arrayWithCapacity:k];
    for (int i=0; i < buckets.count; i++)
        buckets[i] = [NSMutableArray new];

    // Add elements to buckets
    for (int i=0; i < buckets.count; i++) {
        NSInteger index = k * array[i].floatValue; // Asuming "array" has values between 0 and 1
        if (index < buckets.count) [buckets[index] addObject:array[i]];
    }

    NSMutableArray *sortedArray = [NSMutableArray new];

    // Sort individual buckets
    // Concatenate all sorted buckets in order
    for (int i=0; i < buckets.count; i++) {
        buckets[i] = [self quickSort:buckets[i]]; // Sorting algorithm like quicksort/mergesort/insertionsort
        [sortedArray addObjectsFromArray:buckets[i]];
    }

    return sortedArray;
}