zoukankan      html  css  js  c++  java
  • 二分查找算法

    //*************************************
    // 函数名称:FineTab  二分查找算法 ->查温度表
    // 函数功能:查找数据在表中相应的位置 表中数据从大到小
    // 入口參数:表地址、表长度、要查找的数据
    // 出口參数:无
    // 返 回 值:数据在表中的位置
    //***************************************/
    
    int FineTab(int *a,int TabLong,int data)//查表数据为从大到小排序
    {
    		int st,ed,m ;
    		int i ;
    	
    		st = 0 ;//初始化要查询的数为第一个
    		ed = TabLong-1 ;//最后一个数
    		i = 0  ;
    	
    		if(data >= a[st]) return st ;
    		else if(data < a[ed]) return ed ;
    	
    		while(st < ed)
    		{
    			m = (st+ed)>>1 ;//二分取要查询的中间值
    	
    			if(data == a[m] ) break ;
    			if(data < a[m] && data > a[m+1]) break ;
    			
    			
    			if(data > a[m])	ed = m ;					
    			else st = m ;	
    			
    			if(++i > TabLong) break ;
    		}
    	
    		if(st > ed ) return 0 ;	
    		return m ;
    }
    //*************************************
    // 函数名称:FineTab  二分查找算法 ->查温度表
    // 函数功能:查找数据在表中相应的位置 表中数据从小到大排序
    // 入口參数:表地址、表长度、要查找的数据
    // 出口參数:无
    // 返 回 值:数据在表中的位置
    //***************************************/
    
    
    int Fine1Tab(int *a,int TabLong,int data)
    {
    		int st,ed,m ;
    		int i ;
    	
    		st = 0 ;//初始化要查询的数为第一个
    		ed = TabLong-1 ;//最后一个数
    		i = 0  ;
    	
    		if(data <= a[st]) return st ;//小于等于第一个数 ,查询值为0,即为第一个数
    		else if(data >= a[ed]) return ed ;//大于等于最后一个数,查询之为最后一个数
    	
    		while(st < ed)//循环查询
    		{
    	    	m = (st+ed)>>1 ;//二分取要查询的中间值
    			if(data == a[m] ) break ;//刚好是要查询的值,结束查询
    			if(data > a[m-1] && data < a[m]) break ;//data介于中间值和中间值的上个值之间,结束查询
    			if(data < a[m])	ed = m ;//data小于当前中间值,更新最后的范围值					
    			else st = m ;	//data大于当前中间值,更新開始的范围值	
    			
    			if(++i > TabLong) //防止溢出
    				break ;
    		}
    	
    		if(st > ed ) return 0 ;	
    		return m ;
    }
    

  • 相关阅读:
    POJ 3268 Silver Cow Party (Dijkstra)
    怒学三算法 POJ 2387 Til the Cows Come Home (Bellman_Ford || Dijkstra || SPFA)
    CF Amr and Music (贪心)
    CF Amr and Pins (数学)
    POJ 3253 Fence Repair (贪心)
    POJ 3069 Saruman's Army(贪心)
    POJ 3617 Best Cow Line (贪心)
    CF Anya and Ghosts (贪心)
    CF Fox And Names (拓扑排序)
    mysql8.0的新特性
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/3941471.html
Copyright © 2011-2022 走看看