2010.01.10 正则序,Shell Sort

    正则序和应用序

    今天看了Berkeley的SICP的视频后,总算明白了正则序(normal order)和应用序(application order)的区别。
    正则序就是将全部表达式展开,然后再代入参数的值。这是一种很自然的方法,存在的问题是需要的空间很大并且如果参数的计算与其他的环境相关,则会产生不一致的效果。如:(*(random 12) random(12)),则这个表达式不一定等于(square ‘(random 12))。
    应用序则是先将参数计算出来,然后再代入表达式进行计算。这种方法的缺点我没看出来,书上说要证明代换是等价的比较难。
    函数式编程可以方便地进行并行计算的原因可能就是所有的元素都是函数,这些函数的关系是一定的,计算顺序由他们的关系确定。因此一些“弱相关”代码段就可以从这种结构中很自然地提取出来。(--个人观点)
正则序和应用序的区别原文:
正则序:
    Call proc with argument expressions
应用序:
  • Compute argument values
  • call proc with values(calculated above)    

    几种排序

    插入排序在待排序元素为顺序时的高效使得Shell想出来了插入排序的改进版,就是先将距离远的元素进行插入排序,然后在逐渐缩小间隔距离,不断进行排序。如对一个长度为16的数组,先对距离为15的元素进行排序,再对距离为8的元素进行排序,再对距离为4的元素进行排序....,这种方法就是Shell Sort
    MergeSort的数据结构可以用链表数组来表示,不同的链表其中元素的数量是不一样的,如第一个里面有1个元素,第二个则有2个元素,第三个有4个元素。。。
其他
    要多动手,现在只是看视频,看资料,没什么效果,上个周看的视频的内容都忘光了。动手,看书要和视频同步,不能图块。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值