Linear search is search each element one after the other.
Here is the example, written in Objective for 1 - dimension array linear search algorithm.
#import
@interface AlgorithmSearch : NSObject
-(int)searchLinear: (NSArray *) arr searchingElement: (int) ele;
@end
@implementation AlgorithmSearch
-(id)init {
self = [super init];
return self;
}
// Linear Search Algoithm
-(int)searchLinear: (NSArray *) arr searchingElement: (int) ele {
// We have take the algorithm and loop all the elements.
// For linear search the complexity is O(n*m). Here m = 1(1 dimention array) and n = number of elements in the array.
for (int obj = 0; obj < arr.count; obj++) {
int value = [arr[obj] intValue];
if (ele == value ) {
return obj;
}
}
return -1;
}
@end
int main() {
@autoreleasepool {
NSArray *elementsArray = @[@30,@40,@80,@70];
int searchingElement = 80;
AlgorithmSearch * algoSearch = [[AlgorithmSearch alloc] init];
int index = [algoSearch searchLinear:elementsArray searchingElement:searchingElement];
NSLog(@"%d",index);
}
}
The output will be '2' because we are searching the element 80 which is at the index of 2 and we can say that the position is '3'.
Now let's see how we do it for 2-D array, so we can write for M-D by using the same logic.
@interface AlgorithmSearch : NSObject
-(NSDictionary *)multiDimensionLinearSearch: (NSArray *) arr searchingElement: (int) ele;
@end
@implementation AlgorithmSearch
-(id)init {
self = [super init];
return self;
}
// M-D Linear Search Algoithm
-(NSDictionary *)multiDimensionLinearSearch: (NSArray *) arr searchingElement: (int) ele {
// We have take the algorithm and loop all the elements.
// For linear search the complexity is O(n*m). Here m = 2(2 dimention array) and n = number of elements in the array.
for (int obj1 = 0; obj1 < arr.count; obj1++) {
NSArray *subArr = arr[obj1] ;
for (int obj2 = 0; obj2 < subArr.count; obj2++) {
int value = [subArr[obj2] intValue];
if (ele == value ) {
// NSDictionary cannot store scalar values (like BOOL, NSInteger, etc.), it can store only objects. You must wrap your scalar values into NSNumber to store them:
NSDictionary *dic = [[NSDictionary alloc]initWithObjectsAndKeys: [NSNumber numberWithInt:obj2], @"SubArrayPositioin", [NSNumber numberWithInt:obj1], @"Position", nil];
return dic;
}
}
}
return nil;
}
@end
int main() {
@autoreleasepool {
NSArray *elementsArray = @[@[@1, @2], @[@10, @20], @[@100, @200], @[@1000, @2000]];
int searchingElement = 1000;
AlgorithmSearch * algoSearch = [[AlgorithmSearch alloc] init];
NSDictionary *indexDic = [algoSearch multiDimensionLinearSearch:elementsArray searchingElement:searchingElement];
NSLog(@"%@",indexDic);
}
}
The output will be as shown below:
Algo_Linear_ObjectiveC[10305:627287] {
Position = 3;
SubArrayPositioin = 0;
}
No comments:
Post a Comment