zoukankan      html  css  js  c++  java
  • 二分查找练习

    #include <iostream>
    
    using namespace std;
    
    int arr1[] = { 1,2,3,4,5,6,7,8,9 };
    int arr2[] = { 1,1,1,2,3,3,4,6,98 };
    
    int MyBinarySearch(int array[], int begin, int end, const int value)
    {
    	while (begin <= end)
    	{
    		int middle = (begin + end) / 2;
    		if (value > array[middle])
    			return MyBinarySearch(array, (middle+1), end, value);
    		else if (value < array[middle])
    			return MyBinarySearch(array, 0, (middle-1), value);
    		else
    			return middle;
    	}
    	return -1;
    }
    
    int  MyBinarySearch1(int array[], int length,const int value)
    {
    	int begin = 0;
    	int end = length - 1;
    	while (begin <= end)
    	{
    		int middle = (begin + end) / 2;
    		if (value == array[middle])
    			return middle;
    		else if (value > array[middle])
    			begin = middle + 1;
    		else
    			end = middle - 1;
    	}
    
    	return -1;
    }
    
    
    int main()
    {
    	cout << MyBinarySearch(arr1, 0, 8, 7) << endl;
    	cout << MyBinarySearch(arr2, 0, 8, 98) << endl;
    	cout << MyBinarySearch(arr1, 0, 8, 1) << endl;
    	cout << MyBinarySearch(arr2, 0, 8, 1) << endl;
    	cout << endl;
    	cout << MyBinarySearch(arr1, 0, 8, 77) << endl;
    	cout << MyBinarySearch(arr1, 0, 8, 0) << endl;
    	cout << MyBinarySearch(arr2, 0, 8, 7) << endl;
    	cout << MyBinarySearch(arr2, 0, 8, 99) << endl;
    	cout << MyBinarySearch(arr2, 0, 8, 0) << endl;
    	cout << endl;
    
    	cout << MyBinarySearch1(arr1, 9, 7) << endl;
    	cout << MyBinarySearch1(arr2, 9, 98) << endl;
    	cout << MyBinarySearch1(arr1, 9, 1) << endl;
    	cout << MyBinarySearch1(arr2, 9, 1) << endl;
    	cout << endl;
    	cout << MyBinarySearch1(arr1, 9, 77) << endl;
    	cout << MyBinarySearch1(arr1, 9, 0) << endl;
    	cout << MyBinarySearch1(arr2, 9, 7) << endl;
    	cout << MyBinarySearch1(arr2, 9, 99) << endl;
    	cout << MyBinarySearch1(arr2, 9, 0) << endl;
    	cout << endl;
    
    
        return 0;
    }
    

      

  • 相关阅读:
    yarn安装ant-报错
    Linux扩展分区记录
    转载--tomcat调优
    转发:tomcat的acess_log打印post请求参数,分析日志
    经纬度差和米单位的换算
    loadrunner 11 安装与使用
    前端知识图谱
    linux-nc命令介绍
    双网卡设置(转:https://www.cnblogs.com/visionfeng/p/5825078.html)
    网络设备介绍
  • 原文地址:https://www.cnblogs.com/itdef/p/6097955.html
Copyright © 2011-2022 走看看