C# Asp.Net数字分页控件,时间复杂度O(n/2)
效果图:
主要技术点是找到要显示的最大页索引和最小页索引。这里用的是查找法,即从当前索引pageIndex开始,分别向前和向后找,一直找个够showPages个或不能再找下去。代码:
- C# code
//找出要显示的最大索引和最小索引 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
[解决办法]
顶下~
[解决办法]
一般不都是折半查找的嘛