一、OC,Swift 二分查詢法

weixin_33890499發表於2016-06-26

做一個合格的程式設計師總是繞不過演算法這道坎,不管演算法在實際運用如何,但總是一個程式設計師進步的必經之路,根據 《演算法》逐一實現書中提到的演算法

簡單的二分查詢法:這裡使用到遞迴思想,嘗試解決模組更小的子問題

swift:

<code>
//二分查詢法
var array = [1,22,3,4,6,2]
func binarySearch(array:[Int],target:Int,start:Int,end:Int) ->Int {
if start > end {
return -1
}
let mid = start + (end - start)/2
if target > array[mid] {
return binarySearch(array, target: target, start:mid+1 , end: end)
}
else if target < array[mid] {
return binarySearch(array, target: target, start: start, end: mid-1)
}
else {
return mid
}
}
binarySearch(array, target: 3, start: 0, end: array.count-1)
</code>

輸出 2

OC:
<code>
- (NSUInteger)binarySearch:(NSArray *)array target:(NSNumber *)target start:(NSUInteger)start end:(NSUInteger)end {
if (start > end) {
return -1;
}
NSUInteger mid = start + (end - start) / 2;
if (target > array[mid]) {
return [self binarySearch:array target:target start:mid+1 end:end];
}else if (target < array[mid]) {
return [self binarySearch:array target:target start:start end:mid-1];
}else {
return mid;
}
}
</code>

相關文章