数据结构-1

2016/01/29 13:56 

一.算法的有穷性

    1.序列Hailstone(n)={1}                                        n<=1

                                          {n}UHailstone(n/2)        n偶数

                                          {n}UHailstone(3n+1)     n奇数

     2.Hailstone(42)= {42,21,64,32,...,1}

     3.int hailstone(int n){//计算序列Hailstone(n)的长度

              int length = 1;//从1开始,一下按定义逐步递推,并累计步数,直至n=1

              while(1<n){(n%2)?n=3*n+1:n/=2;length++;}

               return length;}

      4.Hailstone(7)={7,22,11,34,17,552,26,13,40,20,10,5,16,...,1}

         Hailstone(27)={27,82,41,124,62,31,94,47,142,71,214,107,...}

      5.对于任意的n,算法总有|Hailstone(n)|<∞?

      6.算法的正确性,确定性,可行性,有穷性。并不是所有的程序都是算法,比如上图中的Hailstone(),到目前为止仍然没有发现n使得程序在while()里死循环,但也没有确定所有的n都可以使得程序返回,所以这个程序不一定是算法。

      7.循环和级数

          for(int i =0;i<n;i++)

          for(int j=0;j<i;j+=2013)

               o1operation(i,j);

           算术级数:...

               for(int i= 1;i<n;i<<=1)

               for (int j = 0;j<i;j++)

                    o1operation(i,j);

      8.数组倒置

         *任意数组A[m,n),将其前后颠倒

           统一接口:void reverse(int* A,int lo,int hi);

          *递归版

                     if()//问题规模的奇偶性不变,需要两个递归基

                         {swap(A[lo],A[hi]);reverse(A,lo+1,hi-1);}

           *迭代原始版

               next:

                     if(lo<hi)

                           {swap(A[lo],A[hi]);lo++;hi++;goto next;}

            *迭代精简版

                     while(lo<hi)swap(A[lo++],A[hi--]);

         




     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值