效果图:
主要技术点是找到要显示的最大页索引和最小页索引。这里用的是查找法,即从当前索引pageIndex开始,分别向前和向后找,一直找个够showPages个或不能再找下去。代码: //找出要显示的最大索引和最小索引
int maxIndex=pageIndex;
int minIndex=pageIndex;
showPages--; //去掉当前页
bool noOper;
while (showPages > 0)
{
noOper = true;
if (maxIndex + 1 < pageCount && showPages > 0) //向前找一页
{
maxIndex++;
showPages--;
noOper = false;
}
if (minIndex - 1 >= 0 && showPages > 0) //向后找一页
{
minIndex--;
showPages--;
noOper = false;
}
if (noOper) //没有查找,说明showPages>总页数
break;
}
就时间复杂度来说,最好的时候是O(n/2),最坏的时候是O(n-1);
我总感觉能有数学的方法来找出最大和最小页索引,请高手指点。这有点像求1到100的和,有人用for循环从1加到100,而聪明的人用等差公式,一下子就出来。
有源码,下载地址:http://download.csdn.net/source/2557429
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货