公开课学习笔记-[哈佛]计算机科学CS50(四)

来源:互联网 发布:淘宝店铺可以卖多少钱 编辑:程序博客网 时间:2024/05/17 16:53

第9课 归并排序 -2011.10.27

Bubble sort的效率还是低,衡量效率包括占用空间,CPU cycles。在排序的情况,用最坏的情况衡量,例如反序。Merge Sort效率明显高。

详细介绍Merge Sort(归并排序),使用recursion(递归)方式很容易实现,算法如下:

sore(){
    if( n < 2)
        return
    else
        sore() 左1半
        sore() 右1半
        merge() 将左右两半有序的排序合并
}

使用时间为:T(n) = T(n/2)+T(n/2) + n; if n >1;T(n) = 0 ,if (n = 1),总效率为O(NLogN)。

第10课 指针 -2011.10.28

Design,有好的用户体验很重要,而不仅是正确工作。

介绍指针。例如int ×a = & b; int temp = * a;(指针a所指的内容,也就是b)。

对于内存,从上(低地址)到下(高地址),首先静态分配,gobal和static数据,在程序一开始就进行静态分配;之下是在运行中动态分配空间,称为heap,就是C中通过malloc或者Java中通过new中分配的控制。最后是stack,stack是从下向上分配的,运行中自动分配,用于函数或方法的存储空间,当调用某个函数时,在stack为其分配某个空间,存放相关的local参数。由于heap是从上至下,stack从下至上,如果没有空间,就会发生溢出,在C中出现Core段错误。总体来讲:C语言使用栈(Stack)来保存函数返回地址/栈祯基址、完成函数的参数传递和函数局部变量的存储。 如果程序需要在运行的过程中动态分配内存,可以利用堆(Heap)来实现。

相关链接:我的与编程思想相关的文章

原创粉丝点击