程序员必须会的基本算法2-非递归二分查找算法

package basic;

public class BinarySearch
{
	public static void main(String[] args)
	{
		int[] arr = {0,1,2,3,4,5,6,7};
		int index = binarysearch(arr, 123);
		System.out.println(index);

	}
	/**
	 * 二分查找只适用于从有序的数列中进行查找,时间复杂度是O(log n)
	 * @param arr 传入的有序数组
	 * @param number 需要找的值
	 * @return 返回找到的位置,如果找不到就返回-1
	 */
	public static int binarysearch(int[] arr,int number)
	{
		int left=0;
		int right=arr.length-1;
		while(left<=right)
		{
			int middle=(left+right)/2;
			if(arr[middle]==number)
			{
				return middle;
			}
			else if(arr[middle]>number)
			{
				right=middle-1;
			}
			else
			{
				left=middle+1;
			}
		}
		return -1;
	}
}

发布了133 篇原创文章 · 获赞 37 · 访问量 4728

猜你喜欢

转载自blog.csdn.net/qq_43416157/article/details/104429365