二分搜索
2007-12-25 17:21
218 查看
算法描述:
遍历有序数组查找目标。
始终将数组A的n个元素分成个数基本相同的两部分,取a【n/2】与x比较,若相等则终止;若“<”则在数组左半部看作数组A搜索x;若“>”则在数组右半部看作数组A搜索x。
代码:
[align=left] /**[/align]
[align=left] *binarySearch[/align]
[align=left] *@paramArray[/align]
[align=left] *@paramX[/align]
[align=left] *@return[/align]
[align=left] */[/align]
[align=left] public int binarySearch (int [] Array, int X) {[/align]
[align=left] [/align]
[align=left] int left = 0;[/align]
[align=left] int right = Array.length -1;[/align]
[align=left] [/align]
[align=left] while (right >= left) {[/align]
[align=left] [/align]
[align=left] int middle = (right + left) / 2;[/align]
[align=left] [/align]
[align=left] if (X == Array [middle]) {[/align]
[align=left] return middle;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] if (X > Array [middle]) {[/align]
[align=left] left = middle + 1 ;[/align]
[align=left] } else {[/align]
[align=left] right = middle - 1;[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] return -1;[/align]
}
遍历有序数组查找目标。
始终将数组A的n个元素分成个数基本相同的两部分,取a【n/2】与x比较,若相等则终止;若“<”则在数组左半部看作数组A搜索x;若“>”则在数组右半部看作数组A搜索x。
代码:
[align=left] /**[/align]
[align=left] *binarySearch[/align]
[align=left] *@paramArray[/align]
[align=left] *@paramX[/align]
[align=left] *@return[/align]
[align=left] */[/align]
[align=left] public int binarySearch (int [] Array, int X) {[/align]
[align=left] [/align]
[align=left] int left = 0;[/align]
[align=left] int right = Array.length -1;[/align]
[align=left] [/align]
[align=left] while (right >= left) {[/align]
[align=left] [/align]
[align=left] int middle = (right + left) / 2;[/align]
[align=left] [/align]
[align=left] if (X == Array [middle]) {[/align]
[align=left] return middle;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] if (X > Array [middle]) {[/align]
[align=left] left = middle + 1 ;[/align]
[align=left] } else {[/align]
[align=left] right = middle - 1;[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] return -1;[/align]
}
相关文章推荐
- POJ - 3258/USACO - Dec06 Silver/NOIP 2015 - 提高组 River Hopscotch 贪心+二分搜索
- 二分搜索:lower_bound, upper_bound
- 二分搜索错误情况的分析
- hihoCoder#1095(二分搜索)
- 二分搜索及其扩展(循环递增数组的搜索)
- [2010山东ACM省赛] Greatest Number(数的组合+二分搜索)
- 二分搜索 POJ 2456 Aggressive cows
- poj——1064Cable master(二分搜索 求绳子可以满足的最大长度)
- 搜索-O - 切绳子问题(二分)
- 二分搜索树(BST)
- Poj 1064 && Hdu 1551 Cable master【二分搜索】
- csu 1114平方根大搜索(JAVA大小数+二分)
- PAT (Advanced Level)1010. Radix (25) 二分搜索
- hdu-2141Can you find it?(二分搜索求和)
- 【算法】二分答案法--暴力搜索答案方法
- 二分搜索的运用(1最大化最小值)
- 最大化平均值(二分搜索)
- 二分搜索
- 关于二分查找和二分搜索
- leetcode 668. Kth Smallest Number in Multiplication Table 有序矩阵搜索 + 右上角二分搜索