Skip to content

Instantly share code, notes, and snippets.

@emmasteimann
Created January 19, 2016 05:41
Show Gist options
  • Save emmasteimann/b5d0eb8270c196c0008c to your computer and use it in GitHub Desktop.
Save emmasteimann/b5d0eb8270c196c0008c to your computer and use it in GitHub Desktop.
Objective-C Merge Sort
@interface MergeSort : NSObject
+ (NSArray *)mergeSort:(NSArray *)mergeList;
@end
@implementation MergeSort
+ (NSArray *)mergeSort:(NSArray *)mergeList {
if([mergeList count] <= 1) {
return mergeList;
}
int midIndex = [mergeList count] / 2;
NSArray *leftArray = [self mergeSort:[mergeList subarrayWithRange:(NSRange){0, (midIndex)}]];
NSArray *rightArray = [self mergeSort:[mergeList subarrayWithRange:NSMakeRange(midIndex, [mergeList count] / 2)]];
return [MergeSort merge:leftArray with:rightArray];
}
+ (NSArray *)merge:(NSArray *)left with:(NSArray *)right {
if ([left count] == 0) {
return right;
} else if ([right count] == 0) {
return left;
} else if (left[0] < right[0]) {
return [@[left[0]] arrayByAddingObjectsFromArray:[self merge:[left subarrayWithRange:(NSRange){1,[left count] - 1}] with:right]];
} else {
return [@[right[0]] arrayByAddingObjectsFromArray:[self merge:[right subarrayWithRange:(NSRange){1,[right count] - 1}] with:left]];
}
}
@end
@emmasteimann
Copy link
Author

Golly Gee Whiz, Objective-C is verbose...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment