1.排序
普通的归并排序,位图解决方案。(To walk faster,simple ,less components, easy to maintain and strong.)
2.二分查找,很好很强大。
3.转动(一个临时变量,递归)。
4.不得不承认,数组是一个不错的数据结构。
5.问题越一般化,解决起来就越容易。
6.将重复性代码写到数组中去,封装复杂的结构,尽可能地使用高级工具,让数据区构造程序。
7.二分法查找,很精练的伪代码:
int binarySearch(DataTye t)
{ //return -1 if t isn't in x;
return any position if t is present in sorted x;
int l,u,m;
l=0;
m=n-1;
while(l<m)
{
m=(l+u)/2;
if(x[m]<t)
l=m+1;
else
if(x[m]==t)
return m;
else
m=n-1;
}
return -1;
}
8. 再次领略分治法的奥秘,or Divide and conquer.
9.面对模式匹配这个一位数组中求取最大子序列的问题,最好的方法竟然可以达到最好O(n)的性能,看来良好的算法,的确不可忽视。这里面涉及的概念主要有:分治,扫描,保存状态,下限,累积等问题。
10.如果可以很好地了解计算机的体系结构和系统内部机理,那么在程序设计的时候就可以使用这些特性来进行优化,典型地例如将循环展开,以利用流水线机理。