objective-c - Objective C 中的桶排序实现

原文 标签 objective-c algorithm sorting bucket-sort

我一直在 Objective-C 中实现不同的排序算法(快速排序、归并排序、冒泡排序)。但是我还没有找到桶排序算法的任何明确实现

我试图在 Objective-C 中找到一个简单有效的桶排序算法实现。

最佳答案

我最终自己做了,如果有人需要,这是我的实现:

- (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;
}

关于objective-c - Objective C 中的桶排序实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47659254/

相关文章:

algorithm - 在n和2n之间找到素数的最快方法是什么

ios - 向后带有自定义字符串

algorithm - 查找所有可能的排列/组合以等于Matlab中的特定总和

string - 如何区分 C++ 中的两个非常长的字符串?

php - 按过去 10 分钟的文章浏览量从高到低排序

python - 如何按字符串中的第二个单词的字母顺序对列表进行排序

python-3.x - 要重新定义哪些 Python 对象比较方法以使 sorted() 起作用?

ios - 发布 pod repo 遇到 "xcodebuild: Returned an unsuccessful exit code"

iphone - 自定义 UIBarButtonItem

ios - 如何检查一个 block 是否实现?