zoukankan      html  css  js  c++  java
  • 二分法在数组中查找关键字

    /*
    	此程序演示了二分法查找算法(针对按从小到大排列的数组)的实现。
    */
    
    #include <iostream>
    
    using namespace std;
    
    /*
    	功能:	实现数组的二分法查找(只算法只适合按从小到大排列的数组)
    	返回值:关键字在数组中的下标, 返回-1表示未找到
    	a[]:	要搜索的数组
    	len:	数组元素个数
    	key:	要查找的关键字
    */
    int binSearch(int a[], int len, int key)
    {
    	int i = len / 2;
    	int ii = 0;
    	if(len < 1)
    		return -1;
    
    	if((key > a[i]) && (len - i > 0))
    	{
    		ii = binSearch(a+i+1, len - i - 1, key);	// 在后半段数组中查找
    		if(ii != -1)
    			return ii + i + 1;						// 加上数组前半段的长度
    		else
    			return -1;
    	}
    	else if(key < a[i] && i > 0)					// 在前半段数组中查找
    		return binSearch(a, i, key);
    	else if(key == a[i])
    		return i;									// 返回关键字在数组中的下标
    	else
    		return -1;									// 未在数组中找到关键字
    }
    
    int main()
    {
    	int a[] = {2, 4, 5, 20, 24, 35, 66, 78, 98};
    	int len = sizeof(a) / sizeof(int);
    	int i, key = -1;
    
    	while(1)
    	{
    		cin>>key;
    		i = binSearch(a, len, key);
    		printf("%d\n", i);
    		if(key > 100)
    			break;
    	}
    
    	return 0;
    }
    
  • 相关阅读:
    Meterpreter
    CHM木马
    浅析ARP协议及ARP攻击
    python绝技 — 使用PyGeoIP关联IP地址和物理位置
    python虚拟环境virtualenv的安装与使用
    python调用nmap探测局域网设备
    提权
    Nexpose
    docker安装使用
    一些渗透测试练习环境介绍
  • 原文地址:https://www.cnblogs.com/joeblackzqq/p/2074897.html
Copyright © 2011-2022 走看看