JAVA实现算法设计策略_【数据结构与算法+研一课程ppt】

2024-05-27 14:58

本文主要是介绍JAVA实现算法设计策略_【数据结构与算法+研一课程ppt】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.Fibonacci数列:o(n)

 public static void Fibonacci(int n ){int a = 0;int b = 1;System.out.println(a);System.out.println(b);for (int x = 0;x < n-1 ;x++){int c = a+b;a = b;b = c;System.out.println(c);}}

2.矩阵乘积:o(n[3])

 public static int[][] Matrixmultiplication(int[][] a,int[][] b){int hang = a.length;int lie = b[0].length;int num = a[0].length;int[][] c = new int[hang][lie];for (int x = 0;x<hang;x++){for (int y = 0;y<lie;y++){int count = 0;for (int k = 0;k<num;k++){count = count + a[x][k]*b[k][y];}c[x][y] = count;}}return c;}

此后感觉讲得比较乱,换用研一课程的算法ppt重新开始看;

1.

P多项式时间内可以解决
NPC无法在多项式时间内解决
NP多项式时间内可验证

2.复杂度

o(c) < o (logn) < o(n) < o(nlogn) < o(n[r]) < o(r[n]) < o(n!)

3.贪心算法:局部最优不一定导致全局最优或正确;证明通常采用反证法;

时间安排算法(不带权重):贪心算法,按最早结束时间进行排序,选择不重复的;nlogn
4.分治算法:将问题分为部分,递归的解决部分的问题,部分的问题之间通常不相关,再用线性的时间将其结果合并

整数相加o(n)
整数相乘:xy=2[n] * x1y1+2[n/2](x0y1+x1y0)+x0y0  = 2[n] * x1y1 + 2[n/2]((x1+x0)(y1+y0)-x1y1-x0y0) + x0y0o(n[1.5])
矩阵乘法:T(n) = 7 T (n/2) +dn[2] o(2.8)

5.动态规划:将问题分解为更小的问题,更小的问题之间通常互相联系,通过小问题的解决达到大问题的解决;

带权重的时间安排算法:opt(j) = {vj+opt(P(j)) , opt(j-1)} max;需要暂存中间结果;o(nlogn)

背包问题:opt(i,w) =  { 0 : i = 0; opt(i-1,w) : wi > w ; max{opt(i-1,w),opt(i-1,w-wi) + vi} NPC问题

o(nw)

6.线性规约 

当问题x可以依靠多项式时间的简单操作及多项式次数的Y的解决方案而解决,则x线性规约到y;

y若是多项式时间可解,则x也在多项式时间内可解;



这篇关于JAVA实现算法设计策略_【数据结构与算法+研一课程ppt】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1007807

相关文章

Java对象和JSON字符串之间的转换方法(全网最清晰)

《Java对象和JSON字符串之间的转换方法(全网最清晰)》:本文主要介绍如何在Java中使用Jackson库将对象转换为JSON字符串,并提供了一个简单的工具类示例,该工具类支持基本的转换功能,... 目录前言1. 引入 Jackson 依赖2. 创建 jsON 工具类3. 使用示例转换 Java 对象为

SpringBoot快速接入OpenAI大模型的方法(JDK8)

《SpringBoot快速接入OpenAI大模型的方法(JDK8)》本文介绍了如何使用AI4J快速接入OpenAI大模型,并展示了如何实现流式与非流式的输出,以及对函数调用的使用,AI4J支持JDK8... 目录使用AI4J快速接入OpenAI大模型介绍AI4J-github快速使用创建SpringBoot

Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)

《Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)》文章介绍了如何使用dhtmlx-gantt组件来实现公司的甘特图需求,并提供了一个简单的Vue组件示例,文章还分享了一... 目录一、首先 npm 安装插件二、创建一个vue组件三、业务页面内 引用自定义组件:四、dhtmlx

Java中的Cursor使用详解

《Java中的Cursor使用详解》本文介绍了Java中的Cursor接口及其在大数据集处理中的优势,包括逐行读取、分页处理、流控制、动态改变查询、并发控制和减少网络流量等,感兴趣的朋友一起看看吧... 最近看代码,有一段代码涉及到Cursor,感觉写法挺有意思的。注意是Cursor,而不是Consumer

解决java.lang.NullPointerException问题(空指针异常)

《解决java.lang.NullPointerException问题(空指针异常)》本文详细介绍了Java中的NullPointerException异常及其常见原因,包括对象引用为null、数组元... 目录Java.lang.NullPointerException(空指针异常)NullPointer

javaScript在表单提交时获取表单数据的示例代码

《javaScript在表单提交时获取表单数据的示例代码》本文介绍了五种在JavaScript中获取表单数据的方法:使用FormData对象、手动提取表单数据、使用querySelector获取单个字... 方法 1:使用 FormData 对象FormData 是一个方便的内置对象,用于获取表单中的键值

Vue ElementUI中Upload组件批量上传的实现代码

《VueElementUI中Upload组件批量上传的实现代码》ElementUI中Upload组件批量上传通过获取upload组件的DOM、文件、上传地址和数据,封装uploadFiles方法,使... ElementUI中Upload组件如何批量上传首先就是upload组件 <el-upl

前端知识点之Javascript选择输入框confirm用法

《前端知识点之Javascript选择输入框confirm用法》:本文主要介绍JavaScript中的confirm方法的基本用法、功能特点、注意事项及常见用途,文中通过代码介绍的非常详细,对大家... 目录1. 基本用法2. 功能特点①阻塞行为:confirm 对话框会阻塞脚本的执行,直到用户作出选择。②

Docker部署Jenkins持续集成(CI)工具的实现

《Docker部署Jenkins持续集成(CI)工具的实现》Jenkins是一个流行的开源自动化工具,广泛应用于持续集成(CI)和持续交付(CD)的环境中,本文介绍了使用Docker部署Jenkins... 目录前言一、准备工作二、设置变量和目录结构三、配置 docker 权限和网络四、启动 Jenkins

SpringBoot项目注入 traceId 追踪整个请求的日志链路(过程详解)

《SpringBoot项目注入traceId追踪整个请求的日志链路(过程详解)》本文介绍了如何在单体SpringBoot项目中通过手动实现过滤器或拦截器来注入traceId,以追踪整个请求的日志链... SpringBoot项目注入 traceId 来追踪整个请求的日志链路,有了 traceId, 我们在排