标签:
package com public class Test { public static void main(String[] args) { int[] nums = {4,7,7,9,12,13}; int index = searchLastSmaller(nums,1); System.out.println(index); } /* * 第一个与key相等的元素 */ public static int searchFirstEqual(int[] arr, int key){ int left = 0, right = arr.length-1; while(left<=right){ int mid = (left+right)/2; if(arr[mid]>=key)right=mid-1; else if(arr[mid]<key) left = mid+1; } if(left<arr.length&&arr[left]==key) return left; return -1; } /* * 找出最后一个与key相等的元素 */ public static int searchLastEqual(int[] arr, int key){ int left = 0, right = arr.length-1; while(left<=right) { int mid = (left+right)/2; if(arr[mid] > key) right = mid - 1; else if(arr[mid] <= key) left = mid + 1; } if( right>=0 && arr[right] == key) return right; return -1; } /* * 找出第一个大于等于key的元素 * */ public static int searchFirstEqualOrLarger(int arr[],int key){ int left=0, right=arr.length-1; while(left<=right) { int mid = (left+right)/2; if(arr[mid] >= key) right = mid-1; else if (arr[mid] < key) left = mid+1; } if(left>=arr.length)return -1; return left; } /* * 查找第一个大于key的元素 */ public static int searchFirstLarger(int[] arr, int key){ int left=0, right=arr.length-1; while(left<=right) { int mid = (left+right)/2; if(arr[mid] > key) right = mid-1; else if (arr[mid] <= key) left = mid+1; } if(left>=arr.length)return -1; return left; } /* * 查找最后一个小于或等于Key的元素 */ public static int searchLastEqualOrSmaller(int[] arr, int key){ int left=0, right=arr.length-1; while(left<=right) { int m = (left+right)/2; if(arr[m] > key) right = m-1; else if (arr[m] <= key) left = m+1; } //若right=-1,表明不存在 return right; } /* * 查找最后一个小于key的元素 */ public static int searchLastSmaller(int[] arr, int key){ int left=0, right=arr.length-1; while(left<=right) { int mid = (left+right)/2; if(arr[mid] >= key) right = mid-1; else if (arr[mid] < key) left = mid+1; } //若right=-1,表明不存在 return right; } }
标签:
原文地址:http://blog.csdn.net/u013238950/article/details/51361138