
算法课程设计报告
一、算法分析的基本方法二、算法设计的基本策略
建筑构造课程设计心得体会
2.背包问题:#include stdio.h#define N 3 \\\/*物品的最大件数*\\\/#define M 20 \\\/*背包的载重*\\\/\\\/* 此函数为贪心算法,参数x表示解向量,参数n表示物品的件数,参数w表示物品的 重量构成的数组,参数m表示背包的载重,参数b表示单位重量收益按非增次数排列 时的下标变化情况。
*\\\/ void GreedyKnapsack(float *x,int n,float *w,float m,int *b){ int i; float u=m; for(i=0;i 按平均时间将排序分为四类: (1)平方阶(O(n2))排序 一般称为简单排序,例如直接插入、直接选择和冒泡排序; (2)线性对数阶(O(nlgn))排序 如快速、堆和归并排序; (3)O(n1+£)阶排序 £是介于0和1之间的常数,即0<£<1,如希尔排序; (4)线性阶(O(n))排序 如桶、箱和基数排序。 各种排序方法比较 简单排序中直接插入最好,快速排序最快,当文件为正序时,直接插入和冒泡均最佳。 影响排序效果的因素 因为不同的排序方法适应不同的应用环境和要求,所以选择合适的排序方法应综合考虑下列因素: ①待排序的记录数目n; ②记录的大小(规模); ③关键字的结构及其初始状态; ④对稳定性的要求; ⑤语言工具的条件; ⑥存储结构; ⑦时间和辅助空间复杂度等。 不同条件下,排序方法的选择 (1)若n较小(如n≤50),可采用直接插入或直接选择排序。 当记录规模较小时,直接插入排序较好;否则因为直接选择移动的记录数少于直接插人,应选直接选择排序为宜。 (2)若文件初始状态基本有序(指正序),则应选用直接插人、冒泡或随机的快速排序为宜; (3)若n较大,则应采用时间复杂度为O(nlgn)的排序方法:快速排序、堆排序或归并排序。 快速排序是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短; 堆排序所需的辅助空间少于快速排序,并且不会出现快速排序可能出现的最坏情况。 这两种排序都是不稳定的。 若要求排序稳定,则可选用归并排序。 但本章介绍的从单个记录起进行两两归并的 排序算法并不值得提倡,通常可以将它和直接插入排序结合在一起使用。 先利用直接插入排序求得较长的有序子文件,然后再两两归并之。 因为直接插入排序是稳定的,所以改进后的归并排序仍是稳定的。 (4)在基于比较的排序方法中,每次比较两个关键字的大小之后,仅仅出现两种可能的转移,因此可以用一棵二叉树来描述比较判定过程。 当文件的n个关键字随机分布时,任何借助于比较的排序算法,至少需要O(nlgn)的时间。 百度文库里也有说明,详见:下面是一段测试程序:用系统计时器算时间复杂度。 #include 计图形学我没学过,但学法设计与分析。 挺难的,最好你还是从一就好好学不然上完了发现什么都不知道,不过那个课考试好办。 因为内容是一些编程思想,很难考核。 就《算法设计与分析》这门,在进入正式内容之前,会讲一些基础概念和介绍算法复杂度的分析,如时间复杂度、空间复杂度,如何评价一个算法的优劣。 这个内容虽然数据结构里讲过,但在这门学科里讲得要系统深入一些。 然后就是会讲到一些经典的算法思想,比如递归和分治策略、贪心算法、回溯法、分支限界法、随机化算法等等,每个种算法是教给你一种策略、一种思想,其实只要这里的两三种思想深化到你的头脑中了,对你的编程是很有帮助的。 这门课以讲算法思想为主,另外也会介绍一些相关内容,比如动态规划、线性规划、网络流什么的,还有NP完全理论与近似算法。 数据结构学习体会及教学建议时间过的很快,一转眼一学期的数据结构课程就已经快要告一段落了,在接触这么课以前,我觉得编程无非就是会写代码就好了。 然而事实上数据结构对于程序来说,有着非常重要的地位。 随着计算机应用领域的不断扩大,非数值计算的问题占据了当今计算机应用的绝大部分,简单的数据类型已经远远不能满足需要,个数据元素之间的复杂关系已经不是普通数学方程式能够表达的了,所以数据结构就扮演了十分重要的角色。 在学期初,我觉得数据结构还是比较简单的,但可能由于之前c语言学习对指针掌握的不够熟练,导致在数据结构中接触到与指针有关的问题,例如线性表,堆栈,队列,二叉树等问题的时候,都会显得有些吃力。 但是在不断学习数据结构的过程中我也不断加强了对指针的学习,现在我已经能够基本掌握指针的相关知识并且能够熟练运用了。 这一学期的学习下来我发现想要学好数据结构有以下几点经验{虽然可能我的数据结构学的并不是很好}1.初步了解算法思想、原理想要弄清楚一个算法的实现,首先要知道这个算法的大致原理,这是最简单的一步,也是最基础的一步,只有明白算法想要干什么,才能弄清楚相应的代码段是为什么2.钻研课本代码段对于书上的算法代码,我们一定要仔细钻研每一步的具体含义和目的,在此基础上深入的了解算法的实现过程,而不是一味的四级硬背,不仅无聊,而且效率低下。 3.查找各种算法资料例如排序算法,其实历史上有很多不同的排序算法,书上内部排序算法比较课程设计
求《计算机图形学》(项志刚)和《算法设计与分析》(第2版)的总结
学习数据结构的心得体会



