C# Asp.Net数字分页控件,时间复杂度O(n/2)
效果图:
主要技术点是找到要显示的最大页索引和最小页索引。这里用的是查找法,即从当前索引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; }