数据结构(三)算法

2024-05-09 21:52
文章标签 数据结构 算法

本文主要是介绍数据结构(三)算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数据结构(三)算法

要点:解决问题方法的效率,跟算法的巧妙程度有关

思考:如何让算法更巧妙

01 如何空间的利用效率

参考:实现多项式的两种算法

public static double f1(int n,double[] a,double x) {double rs=a[0];for (int i = 1; i < a.length; i++) {rs+=a[i]*Math.pow(x, i);}return rs;}public static double f2(int n,double[] a,double x) {double rs=a[n];for (int i = n; i >0; i--) {rs=a[i-1]+rs*x;}return rs;}

02 案例:实现多项式的两种算法

1.循环相加

  • 一般的解决方式,直观的写法
public static double f1(int n,double[] a,double x) {double rs=a[0];for (int i = 1; i < a.length; i++) {rs+=a[i]*Math.pow(x, i);}return rs;}

2.合并同类型相加

  • 不使用冥函数,仅用加减法
public static double f2(int n,double[] a,double x) {double rs=a[n];for (int i = n; i >0; i--) {rs=a[i-1]+rs*x;}return rs;}

二者对比

  • 但x为1.1,数组a为1到9时,执行10万次,第一个函数的执行时间是第二个函数的1000倍
  • 但x为1.1,数组a为1到9时,执行100万次,第一个函数的执行时间是第二个函数的1万倍

03 我的总结

  • 提高解决问题方法的效率,要提高算法的巧妙程度,减少计算量,用更多的加减法代替乘除法

这篇关于数据结构(三)算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Vibe算法原理与实践(C++)

简介 ViBe - a powerful technique for background detection and subtraction in video sequences ViBe是一种像素级视频背景建模或前景检测的算法,效果优于所熟知的几种算法,对硬件内存占用也少。ViBe是一种像素级的背景建模、前景检测算法,该算法主要不同之处是背景模型的更新策略,随机选择需要替换的像素的样本,随机

Hough变换与FCM算法相结合检测车道线

https://blog.csdn.net/u010712012/article/details/87477554 之前一小段时间分析的三大块,车辆检测,车道线检测,车辆压线判别。 主要分析了一下车道线检测的优化问题,经过图像处理,canny边缘检测,Hough变换检测出的图如第二幅 因为车道是具有双边缘的,所以根据之前的车道线检测算法检测出来的直线会有不止一条,如果能够用一种算法把多

FCM聚类算法详解(Python实现iris数据集)

参考:https://blog.csdn.net/on2way/article/details/47087201 模糊C均值(Fuzzy C-means)算法简称FCM算法,是一种基于目标函数的模糊聚类算法,主要用于数据的聚类分析。理论成熟,应用广泛,是一种优秀的聚类算法。本文关于FCM算法的一些原理推导部分介绍,加上自己的理解和在课题项目中的应用以文字的形式呈现出来。 首先介绍一下模糊这个概

苏宁算法岗面试

一面:38min 0.自我介绍 1.hr问了一大堆问题,交换生经历,城市,实习与学校的区别等等。 2.技术问题,熟悉哪些深度学习与机器学习的东西,我说了深度学习的东西,开始问。 3.过拟合和欠拟合的原理和解决方案,过拟合和欠拟合在性能上的结果,举了imagenet当中搞得分类问题,为什么会有这样的指标,loss在训练集和测试集上的操作? 答:区分训练误差和泛化误差。 由于优化算法的目标函数通

上海媒智科技计算机视觉算法

一面 1h 狂轰滥炸,把我会的都问了,不会的也问了。。。 0.自我介绍 1.无人机项目介绍 2.深挖细节:YOLOv3的数据增强有哪些? 从config文件中可以看出有角度旋转,饱和度,曝光度(明度)和色度的参数调整,还有jitter参数=0.3。这里是随机调整宽高比的范围。 但是在源码image.c当中有这些数据增强的函数。 3.YOLOv3中的多尺度的anchors和ground tr

Leetcode回溯算法模板

回溯算法Leetcode汇总: 78.子集 class Solution:def subsets(self, nums): if not nums:return []res = []n = len(nums)def helper(idx, temp_list):res.append(temp_list)for i in range(idx, n):helper(i + 1, temp_lis

Java比较和交换示例 - CAS算法

Java比较和交换示例 - CAS算法 由Lokesh Gupta | 提起下:多线程 一个Java 5中最好添加的是支持类,如原子操作AtomicInteger,AtomicLong等等。这些课程帮助您最大限度地减少复杂的(非必要)需要多线程的,如增加一些基本的操作代码或递减的值在多个线程之间共享。这些类内部依赖于名为CAS(比较和交换)的算法。在本文中,我将详细讨论这个概念。 1.乐观和

Java内存管理 - 垃圾收集算法

我们都知道Java 中垃圾收集器 [GC] 的功能。但只有少数人试图深入了解垃圾收集的工作原理。你不是其中之一,这就是你在这里的原因。 在这个Java内存管理教程中,我们将尝试了解Java垃圾收集的当前算法,我们将了解这些算法的演变。 目录1. Java中的内存管理2.引用计数机制3.标记和清除机制4.停止并复制GC 5.分代停止和复制6.如何提高Java中的内存利用率 1.

Redis利用zset数据结构如何实现多字段排序,score的调整(finalScore = score*MAX_NAME_VALUE + getIntRepresentation(name) )

1、原文:   2、使用sql很容易实现多字段的排序功能,比如: select * from user order by score desc,name desc; 3、问题:用两个字段(score,name)排序。在redis中应该怎么做?   4、使用按分数排序的redis集合。你必须根据你的需要准备分数。 finalScore = score*MAX_NAME_VALUE +

数据结构之五

每日一结   ​     哈弗曼的完整程序: Head.h: Linkqueue.c: Huffman.c:   Makefile: 图的存储(邻接矩阵): 邻接矩阵的实例: