Advertisement
Codeshaper2077

Codeee

Mar 10th, 2020
976
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. #import "AppDelegate.h"
  3. #import "binarySearch.h"
  4.  
  5. @interface AppDelegate ()
  6.  
  7. @end
  8.  
  9. @implementation AppDelegate
  10.  
  11.  
  12. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  13.    
  14.     binarySearch *objSearch = [[binarySearch alloc] init];
  15.    
  16.     NSArray *array = [NSArray arrayWithObjects: @1, @2, @3, @4, @5, @6, @7, @8, nil];
  17.    
  18.     [objSearch initWithArray:array];
  19.     [objSearch searchFor: 6];
  20. @end
  21.  
  22.  
  23. #import <Foundation/Foundation.h>
  24.  
  25. NS_ASSUME_NONNULL_BEGIN
  26.  
  27. @interface binarySearch : NSObject
  28.  
  29. //properties
  30. @property (strong, nonatomic) NSArray *list;
  31. @property (assign, nonatomic) NSInteger middle;
  32.  
  33. //functions
  34. -(instancetype) initWithArray: (NSArray*) array;
  35. -(NSInteger) searchFor: (NSInteger) number;
  36.  
  37. @end
  38.  
  39. NS_ASSUME_NONNULL_END
  40.  
  41.  
  42. #import "binarySearch.h"
  43.  
  44. @implementation binarySearch
  45.  
  46. -(instancetype) initWithArray:(NSArray *)array {
  47.     NSArray *sortedArray = [array sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
  48.         return [obj1 integerValue] > [obj2 integerValue];
  49.     }];
  50.    
  51.     if (![array isEqualToArray:sortedArray]) {
  52.         NSLog(@"okeys");
  53.         return nil;
  54.        
  55.     }
  56.    
  57.     if (self = [super init]) {
  58.         self.list = array;
  59.         self.middle = array.count / 2;
  60.     }
  61.     NSLog(@"initArray!");
  62.     return self;
  63.    
  64. }
  65.  
  66. -(NSInteger) searchFor:(NSInteger)number {
  67.     NSInteger middle = self.list.count / 2;
  68.     NSInteger middleValue = [self.list[middle] integerValue];
  69.     NSArray *subarray = self.list;
  70.     do {
  71.         if (number == middleValue) {
  72.             NSLog(@"%d", [self.list indexOfObject:subarray[middle]]);
  73.             return [self.list indexOfObject:subarray[middle]];
  74.            
  75.         }
  76.         if (middle == 0) {
  77.            
  78.             NSLog(@"not found!");
  79.             return NSNotFound;
  80.            
  81.         }
  82.         if (number > middleValue) {
  83.             subarray = [subarray subarrayWithRange:NSMakeRange(middle + 1, subarray.count % 2 == 0 ? middle - 1 : middle)];
  84.         } else {
  85.             subarray = [subarray subarrayWithRange:NSMakeRange(0, middle)];
  86.         }
  87.         middle = subarray.count / 2;
  88.         middleValue = [subarray[middle] integerValue];
  89.     } while (YES);
  90.    
  91.     return NSNotFound;
  92. }
  93.  
  94.  
  95. @end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement