Search code examples
objective-calgorithmsortingbucket-sort

Bucket Sort implementation in Objective C


I've been implementing different sorting algorithms in Objective-C (quicksort, mergesort, bubblesort). But I haven't found any clear implementation of Bucket Sort algorithm

I'm trying to find a simple and efficient implementation of Bucket Sort algorithm in objective C.


Solution

  • I ended up doing it my self, here's my implementation if anyone needs it:

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