求设计一个算法

2024-05-18 11:14

1. 求设计一个算法

因为我是学计算机软件专业的。故我可以很负责任的告诉你:你的这个要求是没有人能够满足的。理由如下:
(1)、首先链表在计算机软件专业的《数据结构》课程中,应该算是最、最复杂的一种数据结构了,它比对数组、堆栈、队列等的操作要来得复杂得多。原因就是在涉及到对各种链表(单链表、双链表等)的编程中,都必须要定义一个(或者多个)指针变量,用来表示单链表(或者是双链表)。而指针又是 C 语言中功能最为强大、但是同时也是概念最难于理解、而且对于 C 语言中的指针部分的代码又是最难于调试的;
(2)、除了上述的(1)之外,你的要求中又涉及到了《数据结构》课程中的排序算法、以及对链表的各种操作(首先要查找到所需要删除的节点、然后再从单链表中进行删除。而且了,删除了节点之后,对原来的单链表还需要重新进行排序)
(3)、编写、并且调试通过一个 C 语言源代码并非一件易事,编写任何一个程序,都必须要在一个集成的编程调试环境中,通过对各个变量设置断点、对整个程序进行单步跟踪,才能够最终调试通过该程序。
故你的要求是不可能通过别人的编程来实现的,而必须依靠自己的艰苦努力去调试通过程序。
以上就是我多年编程的亲身体会。

求设计一个算法

2. 设计算法

垂径定理,利用勾股定理解弦长.
设直线为Ax+By+C=0,圆心为(D,E),半径为R
弦长是:2 * Sqrt[R^2 -  (A*D+B*E+C)^2 / (A^2 + B^2)]

3. 算法设计有哪些方法

算法设计常用的几种方法是
1.
穷举法
2.
贪心法
3.
分治法
4.
回溯法
5.
分枝限界法
6.
动态规划法

算法设计有哪些方法

4. 设计一个好的算法通常要考虑哪些要求

数据结构中评价一个好的算法,应该从四个个方面来考虑,分别是:
一、算法的正确性。
二、算法的易读性。
三、是算法的健壮性。
四、是算法的时空效率(运行)。
算法的设计取决于数据(逻辑)结构,算法的实现取决于所采用的存储结构。数据的存储结构本质上是其逻辑结构在计算机存储器中的实现。为了全面反映一个数据的逻辑结构,它在内存中的映像包括两个方面,即数据元素之间的信息和数据元素之间的关系。
不同的数据结构有相应的操作。数据的操作是在数据的逻辑结构上定义的操作算法,如检索、插入、删除、更新和排序。

扩展资料
算法可大致分为基本算法、数据结构的算法、数论与代数算法、计算几何的算法、图论的算法、动态规划以及数值分析、加密算法、排序算法、检索算法、随机化算法、并行算法,厄米变形模型,随机森林算法。
算法可以宏泛的分为三类:
一、有限的,确定性算法 这类算法在有限的一段时间内终止。他们可能要花很长时间来执行指定的任务,但仍将在一定的时间内终止。这类算法得出的结果常取决于输入值。
二、有限的,非确定算法 这类算法在有限的时间内终止。然而,对于一个(或一些)给定的数值,算法的结果并不是唯一的或确定的。
三、无限的算法 是那些由于没有定义终止定义条件,或定义的条件无法由输入的数据满足而不终止运行的算法。通常,无限算法的产生是由于未能确定的定义终止条件。

5. 设计一个好的算法通常要考虑哪些要求

数据结构中评价一个好的算法,应该从四个个方面来考虑,分别是:
一、算法的正确性。
二、算法的易读性。
三、是算法的健壮性。
四、是算法的时空效率(运行)。
算法的设计取决于数据(逻辑)结构,算法的实现取决于所采用的存储结构。数据的存储结构本质上是其逻辑结构在计算机存储器中的实现。为了全面反映一个数据的逻辑结构,它在内存中的映像包括两个方面,即数据元素之间的信息和数据元素之间的关系。
不同的数据结构有相应的操作。数据的操作是在数据的逻辑结构上定义的操作算法,如检索、插入、删除、更新和排序。

扩展资料
算法可大致分为基本算法、数据结构的算法、数论与代数算法、计算几何的算法、图论的算法、动态规划以及数值分析、加密算法、排序算法、检索算法、随机化算法、并行算法,厄米变形模型,随机森林算法。
算法可以宏泛的分为三类:
一、有限的,确定性算法 这类算法在有限的一段时间内终止。他们可能要花很长时间来执行指定的任务,但仍将在一定的时间内终止。这类算法得出的结果常取决于输入值。
二、有限的,非确定算法 这类算法在有限的时间内终止。然而,对于一个(或一些)给定的数值,算法的结果并不是唯一的或确定的。
三、无限的算法 是那些由于没有定义终止定义条件,或定义的条件无法由输入的数据满足而不终止运行的算法。通常,无限算法的产生是由于未能确定的定义终止条件。

设计一个好的算法通常要考虑哪些要求

6. 有效的算法设计

有效的算法设计
  
 贪心法。Dijkstra的最短路径(时间复杂度O(n2));Prim求最小生成树邻接表存储时是O(n+e),图O(n2);关键路径及关键活动的求法。
  
 回溯法
  
 分支限界法
  
 分治法。分割、求解、合并。二分查找、归并排序、快速排序。
  
 动态规划。Floyd-Warshall算法求解图中所有点对之间最短路径时间复杂度为O(n3)
  
 动态规划解题的方法是一种高效率的方法,其时间复杂度通常为O(n2),O(n3)等,可以解决相当大的信息量。(数塔在n<=100层时,可以在很短的时间内得到问题解)
  
 适用的原则:原则为优化原则,即整体优化可以分解为若干个局部优化。
  
 动态规划比穷举法具有较少的计算次数
  
 递归算法需要很大的栈空间,而动态规划不需要栈空间
  
 贪心和动态规划的差别:
  
 所谓贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。这是贪心算法可行的第一个基本要素,也是贪心算法与动态规划算法的主要区别。
  
 在动态规划算法中,每步所作的选择往往依赖于相关子问题的解。因而只有在解出相关子问题后,才能作出选择。而在贪心算法中,仅在当前状态下作出最好选择,即局部最优选择。然后再去解作出这个选择后产生的相应的子问题。
  
 贪心算法所作的贪心选择可以依赖于以往所作过的选择,但决不依赖于将来所作的选择,也不依赖于子问题的解。正是由于这种差别,动态规划算法通常以自底向上的方式解各子问题,而贪心算法则通常以自顶向下的方式进行,以迭代的方式作出相继的贪心选择,每作一次贪心选择就将所求问题简化为一个规模更小的子问题。
  
 P问题
  
 P问题,如果它可以通过运行多项式次(即运行时间至多是输入量大小的多项式函数的一种算法获得解决),可以找到一个能在多项式的时间里解决它的算法。—-确定性问题
  
 NP问题,虽然可以用计算机求解,但是对于任意常数k,它们不能在O(nk)时间内得到解答,可以在多项式的时间里验证一个解的问题。所有的P类问题都是NP问题。
  
 NP完全问题,知道有效的非确定性算法,但是不知道是否存在有效的确定性算法,同时,不能证明这些问题中的任何一个不存在有效的确定性算法。这类问题称为NP完全问题。

7. 算法设计方法的介绍

《算法设计方法》一书介绍了算法描述和算法分析的基本方法,详细介绍了各种典型算法的基本设计思路。算法是计算机科学的核心内容之一,也是应用电子计算机求解实际问题的基础。对复杂的实际应用问题的求解,大多都归结为算法的设计,然后把求解算法转化为计算机程序。

算法设计方法的介绍

8. 算法设计的介绍

本书围绕算法设计技术组织素材,对每种算法技术选择了多个典型范例进行分析。本书将直观性与严谨性完美地结合起来。每章从实际问题出发,经过具体、深入、细致的分析,自然且富有启发性地引出相应的算法设计思想,并对算法的正确性、复杂性进行恰当的分析、认证。

最新文章
热门文章
推荐阅读