Search Insert Position
2015-06-18 15:19
141 查看
Search Insert Position
递归实现二分搜索。将基本情况写下来,在写出递归式,总觉得代码又长又臭
int searchInsert(int* nums, int numsSize, int target) { if(nums==NULL||target<*nums) return 0; if(target>*(nums+numsSize-1)) return numsSize; if(target==*(nums+numsSize/2)) return numsSize/2; else { if(numsSize%2==0) { if(target>*(nums+numsSize/2)) return numsSize/2+1+searchInsert(nums+numsSize/2+1,(numsSize-1)/2,target); else return searchInsert(nums,numsSize/2,target); } else { if(target>*(nums+numsSize/2)) return numsSize/2+1+searchInsert(nums+numsSize/2+1,numsSize/2,target); else return searchInsert(nums,numsSize/2,target); } } }
如下用迭代实现
int searchInsert(int* nums, int numsSize, int target) {int beg,end,mid; beg = 0; end = numsSize-1; while(beg <= end){ mid = (beg + end) / 2; if(nums[mid] == target) return mid; else if(nums[mid] > target) end = mid - 1; else beg = mid + 1; } return beg; }
对于二分搜索,最好不要用元素个数作为参数,最好用元素位置标签来实现二分搜索。
阅读更多相关文章推荐
- 35. Search Insert Position
- Leercode 35 Search Insert Position
- Search Insert Position
- [LeetCode] 35.Search Insert Position
- LeetCode算法问题13 —— Search Insert Position
- Leetcode::Search Insert Position
- Search Insert Position
- [Binary Search]Search Insert Position
- Search Insert Position
- [leetcode刷题系列]Search Insert Position
- [leetcode]Binary Search-35. Search Insert Position
- LeetCode: Search Insert Position
- leetcode-35 Search Insert Position
- Search Insert Position
- Leetcode 35 - Search Insert Position
- LeetCode | Search Insert Position
- 【leetcode】Search Insert Position
- 【LeetCode】Search Insert Position
- [LeetCode] 35. Search Insert Position
- [LeetCode] Search Insert Position