CN102957178B - 改进的折半查找算法在充电管理中的应用方法 - Google Patents

改进的折半查找算法在充电管理中的应用方法 Download PDF

Info

Publication number
CN102957178B
CN102957178B CN201110247736.5A CN201110247736A CN102957178B CN 102957178 B CN102957178 B CN 102957178B CN 201110247736 A CN201110247736 A CN 201110247736A CN 102957178 B CN102957178 B CN 102957178B
Authority
CN
China
Prior art keywords
ordered list
value
charging voltage
bit pointer
charging
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201110247736.5A
Other languages
English (en)
Other versions
CN102957178A (zh
Inventor
张海斌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SHANGHAI MOBILETEK TELECOMMUNICATION Ltd.
Original Assignee
Shanghai Sunrise Simcom Electronic Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Sunrise Simcom Electronic Technology Co Ltd filed Critical Shanghai Sunrise Simcom Electronic Technology Co Ltd
Priority to CN201110247736.5A priority Critical patent/CN102957178B/zh
Publication of CN102957178A publication Critical patent/CN102957178A/zh
Application granted granted Critical
Publication of CN102957178B publication Critical patent/CN102957178B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Charge And Discharge Circuits For Batteries Or The Like (AREA)
  • Secondary Cells (AREA)

Abstract

本发明公开了一种改进的折半查找算法在充电管理中的应用方法,该方法包括以下步骤:S1、根据电池充电曲线得到一个静态的充电电压表;S2、在对电池充电时,启动一个实时任务,周期地读取该电池的充电电压;S3、在所述充电电压表中用折半查找算法去查找所述电池的充电电压,若查找成功,则执行步骤S4,否则执行步骤S5;S4、返回所述电池的充电电压在所述充电电压表中的位序;S5、让查找指针回溯,得知所述电池的充电电压在相应的区间。本发明通过对折半查找算法进行改进,并将改进后的算法运用在充电管理中,可以实时地数字显示当前充电已完成多少,这样就拥有了更友好的人机界面。

Description

改进的折半查找算法在充电管理中的应用方法
技术领域
本发明涉及一种数据查找算法,特别是涉及一种改进的折半查找算法在充电管理中的应用方法。
背景技术
折半查找算法主要是查找有序表中的某个元素,如果找到,则查找成功,并返回该元素的位序,如果没找到,则查找不成功。该算法的优点是查找效率高,时间复杂度是O(logN),N为有序表的长度,空间复杂度是O(1);缺点是待查找表必须是有序的,而且不能查找该元素在有序表的哪个区间(即哪两个相邻元素之间)。
现有的充电管理功能只能表示手机正在充电,但不能实时数字显示充电进度,即充电已完成多少,只是在充电完成后会弹出一个提示框提示充电已完成。而有时用户为了后续使用方便,是希望知道手机充了多少电,这样从用户体验的角度,人机界面就不是很友好。
发明内容
本发明要解决的技术问题是为了克服现有的充电管理功能不能实时数字显示充电进度的缺陷,提供一种改进的折半查找算法在充电管理中的应用方法。
本发明是通过下述技术方案来解决上述技术问题的:一种改进的折半查找算法在充电管理中的应用方法,其特点在于,该方法包括以下步骤:S1、根据电池充电曲线得到一个静态的充电电压表;S2、在对电池充电时,启动一个实时任务,周期地读取该电池的充电电压;S3、在所述充电电压表中用折半查找算法去查找所述电池的充电电压,若查找成功,则执行步骤S4,否则执行步骤S5;S4、返回所述电池的充电电压在所述充电电压表中的位序;S5、让查找指针回溯,得知所述电池的充电电压在相应的区间。
较佳地,所述静态的充电电压表是一个二维有序表。
较佳地,所述步骤S3包括以下步骤:S31、设置三个查找指针,分别为一有序表低位指针low、一有序表中位指针mid、一有序表高位指针high,并让low值为0、high值为N-1,其中N为有序表的长度;S32、利用所述的三个查找指针在所述充电电压表中采用所述折半查找算法查找所述电池的充电电压值;S33、若查找成功,则执行步骤S4,否则执行步骤S5
较佳地,所述步骤S4之后还包括:将所述位序值在有序表中对应的充电进度数值返回给上层使用。
较佳地,所述步骤S5包括以下步骤:S51、使所述有序表低位指针low值减一,然后使所述有序表中位指针mid值为所述有序表高位指针high值与所述有序表低位指针low值之和的一半;S52、比较所述有序表中位指针mid所指示元素值与所述电池的充电电压值的大小,若所述有序表中位指针mid所指示元素值大于所述电池的充电电压值,则执行步骤S53,否则执行步骤S54;S53、使所述有序表中位指针mid值减一然后将所述有序表中位指针mid所指示的位序值在有序表中对应的充电进度数值返回给上层使用;S54、将所述有序表中位指针mid所指示的位序值在有序表中对应的充电进度数值返回给上层使用。
本发明的积极进步效果在于:本发明通过对折半查找算法进行改进,使改进后的折半查找算法不仅可以查找有序表中的某个元素(如果该元素存在),而且可以查找该元素在有序表中的某个区间(如果该元素不存在);进而,将改进后的折半查找算法用于充电管理中,使在充电过程中可以实时数字显示充电进度,这样就方便了用户的使用,拥有了更友好的人机界面。
附图说明
图1为本发明较佳实施例的流程图。
图2为本发明的折半查找算法的流程图。
具体实施方式
下面结合附图给出本发明较佳实施例,以详细说明本发明的技术方案。
图1为本发明一较佳实施方式运用折半查找算法在充电管理中的流程图。
步骤100,根据电池充电曲线得到一个静态的充电电压表。
通常,该充电电压表为一个二维且单增的有序表。其中N为这个电压有序表的长度,batt_adc[N]为电压ADC值表,vbatt为当前充电电压ADC值,batt_volt[i][0](i=0,1,2,...N-1)为电池在各个时间节点的电压,batt_volt[i][1](i=0,1,2,...N-1)为当前充电进度数值,返回给上层使用,比如返回10,代表当前充电已完成10%。
一个充电电压表的示例为:#define N 20;int16 batt_volt[N][2]={{3500,5},{3580,10},{3600,15},{3620,20},{3640,25},{3660,30},{3667,35},{3674,40},{3682,45},{3690,50},{3700,55},{3739,60},{3759,65},{3776,70},{3787,75},{3800,80},{4009,85},{4138,90},{4194,95},{4227,100}}。
程序初始化时先将这个表中电压转化成ADC值,这些ADC值存放在数组batt_adc[N]中,batt_adc[N]的值如下:
batt_adc[N]={153,193,204,214,224,234,238,241,245,249,255,274,285,293,299,306,412,478,506,510}
步骤101,启动一个实时任务,周期地读取当前电池的充电电压ADC值。
步骤102,在充电电压表中用改进的折半查找算法查找电池的充电电压。
其中,改进的折半查找算法的流程图为图2所示。该流程开始于步骤200。
步骤201,设置3个有序表指针,分别为高位指针high、低位指针low、中位指针mid,并使有序表低位指针low值为0,高位指针high值为N-1。
步骤202,判断有序表低位指针low值是否小于或者等于高位指针high值,若是,则执行步骤203,否则执行步骤206。
步骤203,使有序表中位指针mid值为有序表高位指针high值与有序表低位指针low值之和的一半。
步骤204,判断电压ADC有序表中位指针batt_adc[mid]所指的值是否等于当前充电电压ADC值vbatt,若是,则执行步骤205,否则执行步骤210。
步骤205,返回有序表中位指针mid值。
步骤206,有序表低位指针low值减1然后使有序表中位指针mid值为有序表高位指针high值与有序表低位指针low值之和的一半。
步骤207,判断电压ADC有序表中位指针batt_adc[mid]所指的值是否小于或者等于当前充电电压ADC值vbatt,若是,则执行步骤209,否则执行步骤208。
步骤208,返回有序表中位指针mid值减1之后的值。
步骤209,返回有序表中位指针mid值。
步骤210,判断电压ADC有序表中位指针batt_adc[mid]所指的值是否大于当前充电电压ADC值vbatt,若是,则执行步骤211,否则执行步骤212。
步骤211,使有序表高位指针high值等于有序表中位指针mid值减1之后的值,然后返回至步骤202之前。
步骤212,使有序表低位指针low值等于有序表中位指针mid值加1之后的值,然后返回至步骤202之前。
步骤213,该流程图结束。
步骤103,判断查找是否成功,若是,则执行步骤104,否则执行步骤105。
步骤104,返回所述电池的充电电压在所述充电电压表中的位序。
其中,步骤104之后还包括:将所述位序值在有序表中对应的充电进度数值返回给上层使用。
步骤105,让查找指针回溯,得知所述电池的充电电压在相应的区间。
其中,步骤105包括:S51、使有序表低位指针low值减一,然后使有序表中位指针mid值为有序表高位指针high值与有序表低位指针low值之和的一半;S52、比较有序表中位指针mid所指示元素值与所述电池的充电电压值的大小,若有序表中位指针mid所指示元素值大于所述电池的充电电压值,则执行步骤S53,否则执行步骤S54;S53、使有序表中位指针mid值减一然后将该有序表中位指针mid所指示的位序值在有序表中对应的充电进度数值返回给上层使用;S54、将该有序表中位指针mid所指示的位序值在有序表中对应的充电进度数值返回给上层使用。
以下通过一具体用户实际查看充电进度案例进一步说明本发明的技术方案:
例如:
首先,在数组batt_adc[N]中,为了便于对照数据,下面列了两行数据,第一行数据为数组batt_adc的元素的下标,第二行数据为数组batt_adc的元素。
第一行:0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1718 19
第二行:153 193 204 214 224 234 238 241 245 249 255 274 285 293 299 306412 478 506 510
然后,在此分两种情况加以讨论。
情况1:即当前读到的充电电压在电压有序表中能找到(查找成功)。
假设我们当前读到的电池电压ADC值为285,即vbatt=285,然后我们去查batt_adc[N]。首先设两个指针low和high,并让low=0,high=N-1=19。然后进入一个while()循环。进入该循环后,mid=(low+high)/2=(0+19)/2=9,vbatt=285>batt_adc[9]=249,因而,low=mid+1=9+1=10,high=19,mid=(low+high)/2=(10+19)/2=14,vbatt=285<batt_adc[14]=299,因而,low=10,high=mid-1=14-1=13,mid=(low+high)/2=(10+13)/2=11,vbatt=285>batt_adc[11]=274,因而low=mid+1=11+1=12,high=13,mid=(low+high)/2=(12+13)/2=12,vbatt=batt_adc[12]=285,查找成功,返回12。然后将batt_volt[12][1]这个值返回给上层,表示当前充电已完成65%。
情况2:即当前读到的充电电压在电压有序表中不能找到(查找不成功)。
假设我们当前读到的电池电压ADC值为287,即vbatt=287。然后我们去查表batt_adc[N],方法同上。首先设两个指针low和high,并让low=0,high=N-1=19。然后进入一个while()循环。进入该循环后,mid=(low+high)/2=(0+19)/2=9,vbatt=285>batt_adc[9]=249,因而,low=mid+1=9+1=10,high=19,mid=(low+high)/2=(10+19)/2=14,vbatt=285<batt_adc[14]=299,因而low=10,high=mid-1=14-1=13,mid=(low+high)/2=(10+13)/2=11,vbatt=285>batt_adc[11]=274,因而low=mid+1=11+1=12,high=13,mid=(low+high)/2=(12+13)/2=12,vbatt=287>batt_adc[12]=285,因而low=mid+1=12+1=13,high=13,mid=(low+high)/2=(13+13)/2=13,vbatt=287<batt_adc[13]=293,因而low=13,high=mid-1=13-1=12。此时,low>high,退出while()循环,查找不成功。
退出while()循环后,让指针low回溯,即low=low-1=13-1=12,high=12,mid=(low+high)/2=(12+12)/2=12,vbatt=287>batt_adc[12]=285。因此,vbatt∈(batt_adc[12],batt_adc[13]),返回12,然后将batt_volt[12][1]这个值返回给上层,表示当前充电已完成65%。
最后,综合上述两种情况,通常待查找的vbatt∈[batt_adc[i],batt_adc[i+1]),在该区间对应了相应的充电进度数值。该结论表明,如果当前充电电压落在上述右开区间,那么将相应的充电进度数值batt_volt[i][1]返回给上层显示(其中i=0,1,2,...,N-1)。对于边界值,如果vbatt<batt_adc[0],则返回0给上层,表示当前充电已完成0%;如果vbatt>=batt_adc[N-1],则返回100给上层显示,表示当前已充满。上述实例增量为5%,即5%、10%、15%、...这样显示。如果为了提高充电数字显示精度,可以定义N的值为100,这样可以1%、2%、3%、...这样显示。
综上所述,将上述方法运用在充电管理中,能高效查找当前电池充电电压在充电电压表中的相应区间。从而,可以实时地数字显示当前充电已完成多少,这样就拥有了更友好的人机界面。
虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。

Claims (5)

1.一种改进的折半查找算法在充电管理中的应用方法,其特征在于,该方法包括以下步骤:
S1、根据电池充电曲线得到一个静态的充电电压表;
S2、在对电池充电时,启动一个实时任务,周期地读取该电池的充电电压;
S3、在所述充电电压表中用折半查找算法去查找所述电池的充电电压,若查找成功,则执行步骤S4,否则执行步骤S5
S4、返回所述电池的充电电压在所述充电电压表中的位序值;
S5、让查找指针回溯,得知所述电池的充电电压在相应的区间。
2.如权利要求1所述的一种改进的折半查找算法在充电管理中的应用方法,其特征在于,所述静态的充电电压表是一个二维的有序表。
3.如权利要求2所述的一种改进的折半查找算法在充电管理中的应用方法,其特征在于,所述步骤S3包括以下步骤:
S31、设置三个查找指针,分别为一有序表低位指针low、一有序表中位指针mid、一有序表高位指针high,并让有序表低位指针low的值为0、有序表高位指针high的值为N-1,其中N为有序表的长度;
S32、利用所述的三个查找指针在所述充电电压表中采用所述折半查找算法查找所述电池的充电电压;
S33、若查找成功,则执行步骤S4,否则执行步骤S5
4.如权利要求2所述的一种改进的折半查找算法在充电管理中的应用方法,其特征在于,所述步骤S4之后还包括:将所述位序值在有序表中对应的充电进度数值返回给上层使用。
5.如权利要求3所述的一种改进的折半查找算法在充电管理中的应用方法,其特征在于,所述步骤S5包括以下步骤:
S51、使所述有序表低位指针low的值减一,然后使所述有序表中位指针mid的值为所述有序表高位指针high的值与所述有序表低位指针low的值之和的一半;
S52、比较所述有序表中位指针mid所指示元素值与所述电池的充电电压的大小,若所述有序表中位指针mid所指示元素值大于所述电池的充电电压,则执行步骤S53,否则执行步骤S54
S53、使所述有序表中位指针mid的值减一然后将所述有序表中位指针mid所指示的位序值在有序表中对应的充电进度数值返回给上层使用;
S54、将所述有序表中位指针mid所指示的位序值在有序表中对应的充电进度数值返回给上层使用。
CN201110247736.5A 2011-08-24 2011-08-24 改进的折半查找算法在充电管理中的应用方法 Active CN102957178B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110247736.5A CN102957178B (zh) 2011-08-24 2011-08-24 改进的折半查找算法在充电管理中的应用方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110247736.5A CN102957178B (zh) 2011-08-24 2011-08-24 改进的折半查找算法在充电管理中的应用方法

Publications (2)

Publication Number Publication Date
CN102957178A CN102957178A (zh) 2013-03-06
CN102957178B true CN102957178B (zh) 2015-09-09

Family

ID=47765594

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110247736.5A Active CN102957178B (zh) 2011-08-24 2011-08-24 改进的折半查找算法在充电管理中的应用方法

Country Status (1)

Country Link
CN (1) CN102957178B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111190514A (zh) * 2016-09-13 2020-05-22 华为机器有限公司 信息的显示方法和终端

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1434603A (zh) * 2002-01-23 2003-08-06 华为技术有限公司 一种查找表电路的实现方法及查找表电路
CN1529233A (zh) * 2003-10-17 2004-09-15 清华大学 嵌入式实时操作***的二分查找式任务调度方法
CN1873639A (zh) * 2006-06-03 2006-12-06 中国科学技术大学 一种基于响应表的模拟电信号响应方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7788164B2 (en) * 2005-09-15 2010-08-31 Microsoft Corporation Truth revealing market equilibrium

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1434603A (zh) * 2002-01-23 2003-08-06 华为技术有限公司 一种查找表电路的实现方法及查找表电路
CN1529233A (zh) * 2003-10-17 2004-09-15 清华大学 嵌入式实时操作***的二分查找式任务调度方法
CN1873639A (zh) * 2006-06-03 2006-12-06 中国科学技术大学 一种基于响应表的模拟电信号响应方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
一种改进的折半查找算法;方铖;《现代电子技术》;20080301(第5期);第163-164页 *
基于折半查找算法的研究与改进;王海涛等;《计算机与数字工程》;20080220;第36卷(第2期);第4-6页 *

Also Published As

Publication number Publication date
CN102957178A (zh) 2013-03-06

Similar Documents

Publication Publication Date Title
CN101436690B (zh) 一种充电时间的确定方法、装置和终端设备
CN103379158B (zh) 一种社交网络中推荐好友信息的方法及***
CN102724738A (zh) 多模终端、多模终端驻留网络的选择方法及装置
CN104462113A (zh) 搜索方法、装置及电子设备
CN101276255A (zh) 一种移动终端菜单的显示装置及显示方法
CN104007806A (zh) 一种安卓***中的cpu频率的控制方法、装置和设备
CN102867031A (zh) 兴趣点poi搜索结果优化方法、***、移动终端和服务器
CN101901175A (zh) 一种数据备份的方法及电子终端
CN102929981B (zh) 多媒体扫描文件索引方法及装置
CN101887310B (zh) 一种输入状态及键盘样式的切换方法和装置
CN104166730A (zh) 一种呈现搜索结果的方法及装置
CN104166710B (zh) 一种基于移动终端的天气预测方法及其移动终端
CN106842042A (zh) 一种对电量显示进行校准的方法、***以及电子设备
CN103634032B (zh) 数据转移方法、***及移动终端
CN104503668A (zh) 一种菜单快捷方式的生成方法、***及终端
CN104333087A (zh) 移动终端及其智能显示充电电量的方法
CN102088635A (zh) 网络电视机记录历史搜索关键字的方法
CN102957178B (zh) 改进的折半查找算法在充电管理中的应用方法
Gajjar et al. Technoeconomic comparison of alternative vehicle technologies for South Africa's road transport system
CN108920353A (zh) 一种测试方法、装置及电子设备
CN103198157A (zh) 一种大地电场数据的压缩存储处理方法
CN110065411A (zh) 一种基于市场电价和出行习惯的家用电动汽车自动充电方法
KR101619335B1 (ko) 대용량 배터리 에너지 저장 시스템의 피크 쉐이빙 운영방법
CN105225065A (zh) 基于电子健康档案***的二次锂电池监控***及其管理方法
CN103218454A (zh) 基于音频数据的文件查找方法、装置和***

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20200728

Address after: Location 6h3, No.17 plant, No.33 Xiya Road, Shanghai Pudong New Area Free Trade Zone, 200120

Patentee after: SHANGHAI MOBILETEK TELECOMMUNICATION Ltd.

Address before: 201700 No. 888 Shengli Road, Qingpu District, Shanghai

Patentee before: SHANGHAI SUNRISE SIMCOM ELECTRONIC TECHNOLOGY Co.,Ltd.