-
算法第二章——上机实践报告
△实践题目: 2-1 找第k小的数 (25分) △问题描述: 设计一个平均时间为O(n)的算法,在n(1<=n<=1000)个无序的整数中找出第k小的数。 提示:函数int partition(int a[],int left,int right)的功能是根据a[left]~a[right]中的某个 -
算法第二章上机实践报告
1.实践题目:2-1 找第k小的数 2.题目描述: 设计一个平均时间为O(n)的算法,在n(1<=n<=1000)个无序的整数中找出第k小的数。 提示:函数int partition(int a[],int left,int right)的功能是根据a[left]~a[right]中的某个元素x(如 -
算法第二章总结
将要求解的较大规模的问题分割成k个更小规模的子问题。对这k个子问题分别求解。如果子问题的规模仍然不够小,则再划分为k个子问题,如此递归的进行下去,直到问题规模足够小,很容易求出其解为止。 分治法的设计思想是,将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。 优点:结 -
第二章上机实验报告
1.实践问题: 寻找第k小的数 2.问题描述: 设计一个平均时间为O(n)的算法 ,在n(1 <= n <= 1000)个无序的整数中找出第k小的数。 提示:函数int partition(int a[],int left,int right)的功能是根据a[left]~a[right]中的某个元素 -
算法第二章总结
1. 思想:将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。策略:对于一个规模为n的问题,若该问题可以容易地解决(比如说规模n较小)则直接解决,否则将其分解为k个规模较小的子问题,这些子问题互相独立且与原问题形式相同,递归地解这些子问题,然后将各子问题的解合并得到原 -
第二章上机实践报告
题目:找第k小的数问题描述:设计一个平均时间为O(n)的算法,在n(1<=n<=1000)个无序的整数中找出第k小的数 (提示:函数int partition(int a[],int left,int right)的功能是根据a[left]~a[right]中的某个元素x(如a[left])对a[l -
算法第二章上机实践报告
实践题目:最大子列和问题 问题描述: 最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20。现要求你编写程序,计算给定整数序列的最大子列和。1, N2, ..., NK -
算法第二章
小结:第二章主要内容是递归与分治思想。递归算法是一个直接或间接地调用自己的算法。有典型的递归例子:阶乘函数、斐波那契数列还有汉诺塔等。递归算法的优点是结构清晰,可读性强,缺点是运行效率低,耗费的计算时间和占用的存储空间都比非递归算法要多。而分治法的基本思想是将要求解的较大规模的问题分割成k个更小规模 -
算法第二章总结
1.对于分治法的认识: 分治法往往运用于解决较为大型的问题,在处理大型问题的时间上(T(n)=一(nlgn))相较于暴力求解有着极大的优势,以下为分治法进行操作的具体步骤: 分解步骤:由于处理的问题较为大型,故分解成形式一致但规模较小的子问题对于问题的处理效率大有裨益,个人认为这也是分治法的核心。 -
算法第二章小结
算法第二章主要学习了递归算法和分治的思想。递归算法是指直接或者间接的调用自身的算法,最重要的一点是要有终止条件,一般由if语句执行。分治思想是指将一个难以直接解决的较大的问题,分割成一些比较小规模的相同的问题。 首先学习了递归的经典例题,斐波那契数列,当满足n>1时,这个数列的第n项的值是它前面两项