二分法查找
来源:互联网 发布:迷雾影评知乎 编辑:程序博客网 时间:2024/05/13 14:13
- /********************************************************************
- created: 2009/01/01
- created: 1:1:2009 17:28
- author: ZhangLiang
- purpose: 二分法
- *********************************************************************/
- #include "stdafx.h"
- //////////////////////////////////////////////////////////////////////////
- //overload operator
- list<int>::iterator operator +(list<int>::iterator it,int n)
- {
- for (int i = 0;i<n;i++)
- {
- it++;
- }
- return it;
- }
- //////////////////////////////////////////////////////////////////////////
- //get the mid value of one value
- inline int AverageValue(int count)
- {
- if ( 1==count%2)
- {
- return (count+1)/2;
- }
- else
- {
- return count/2;
- }
- }
- //////////////////////////////////////////////////////////////////////////
- //二分法
- //valuelist: the value collection
- // count: value count
- //findvalue: the value be finded
- //the iterator finded
- int Dichotomy(list<int>& valuelist,int count,int findvalue,list<int>::iterator* pit)
- {
- int nCount = AverageValue(count);
- if (1== count)
- {
- if ( findvalue == *(*pit))
- {
- *pit = *pit +1;
- }
- else
- {
- return 0;
- }
- }
- if (findvalue == *(*pit+(nCount-1)))
- {
- *pit = *pit+(nCount-1);
- return 1;
- }
- else if (findvalue < *(*pit+(nCount-1)))
- {
- return Dichotomy(valuelist,nCount,findvalue,pit);
- }
- else if (findvalue>*(*pit+(nCount-1)))
- {
- *pit = *pit+nCount;
- return Dichotomy(valuelist,nCount,findvalue,pit);
- }
- }
- //////////////////////////////////////////////////////////////////////////
- //main function
- int _tmain(int argc, _TCHAR* argv[])
- {
- list<int> lstValues;
- int nCount = 20;
- for (int i =0;i<nCount;i++)
- {
- lstValues.push_back(i);
- }
- int nValue =7;
- list<int>::iterator it = lstValues.begin();
- int ret = Dichotomy(lstValues,nCount,nValue,&it);
- if (ret == 1)
- {
- cout<<*it<<'/n';
- }
- else
- {
- cout<<"No Value/n";
- }
- system("pause");
- return 0;
- }
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 模式窗口window.open造成Session丢失
- 通过飞信的FetionVM的.net虚拟机来加载.net程序,实现在未安装.net的机器上运行.net程序
- 如何判断IP地址是A类B类还是C类?
- 《桃花庵歌》
- 毕业了,桂电(作者:二频.罗比)
- 二分法查找
- 二〇〇九年一月一日
- 新年礼物
- .net 没有强名称
- 2009第一篇——每天进步一点点
- dell台式机xp系统蓝屏问题的解决方法
- 简单配置outlook绑定邮箱
- HttpServlet中的service方法
- JAVA网络聊天室程序