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.如果可以很好地了解计算机的体系结构和系统内部机理,那么在程序设计的时候就可以使用这些特性来进行优化,典型地例如将循环展开,以利用流水线机理。

posted on 2010-09-24 21:43  kangwang1988  阅读(193)  评论(0编辑  收藏  举报