算法入门(零,认识复杂度,对数器,异或运算)_异或操作时间复杂度(2)

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

2.3  :赋值,比较,自增,自减,单语句的if,else

2.4 : 数组寻址操作(link,list不是)

3,举例计算空间复杂度(选择排序)

在列表中,从下标0到n-1开始寻找最小值,放在0位置上。在从下标1到n-1开始寻找最小值(看一遍,比一比,还位置),放在1上,反复循环操作。

把整个流程拆分为基本常熟操作(如下)

常熟操作:an**2+bn+n+c

选择排序
| 第一次    n*(2(看+比)+1 (n个数,+1是换操作   二个数看1次, 比一次) |
| 第二次    n-1*(看+比)+1 (n个数,+1是换操作) |
| 第三次    n-2*(看+比)+1 (n个数,+1是换操作) |
| 反复a次 |

所以选择排序复杂度为O(n^2)

4:意义

当处理大量数据时,我们会发现低价项是什么不重要,每一项系数是什么不是最重要的,最重要是是最高价项,

它是衡量流程复杂程度的一种指标,只与数据量有关,与过程之外的优化无关

5:常见的时间复杂度排序(好到差)

O(1)>O(logn)>O(N)>O(N*logN)>O(N*K) “例子:O(N*2)”>O(k^N)“例子:O(2*N)”>O(N!)

2,额外空间复杂度(记为O(n)流程决定)

2.1:作为输入的参数空间,不算额外空间,作为输出结果的空间,不算额外空间,必要的的,和实现目的有关的都不算。

2.1:当执行算法中,不需要额外空间,只需要额外几个变量,就可以完成算法,额外空间复杂度记为 O(1)“常数操作”

2.2:当执行算法中,与功能无关,自己需要开辟额外数组,就可以完成算法,额外空间复杂度记为 O(n)

3,常数项时间(实现代码时细节决定)

3。1:当时间复杂度与额外空间复杂度一样的情况下,判断哪一个更好算法的标准

3.2  :通常用代码直接进行测试判断,哪一个执行的更快,哪一个好

4,一个问题的最优解是什么意思?

一般情况下,在时间复杂度的指标上,一定要尽可能的低,先满足时间复杂度在使用最少的空间复杂度的算法流程。(特殊情况下,卡常熟项时间)

对数器

1,实现·是对数器?

1.1:你想要测的方法A

1.2:实现复杂度不好,但是对的方法B

1.3:实现一个随机样本产生器

1.4.:把A和B跑起来进行比较,看看结果是否一样

1.5:如果结果不一致,人工干涉用断点查看不同,改进方法A

1.6:当样本数量多时依然正确,则方法A就正确了

2,设置随机样本产生器
'''
    设计一个随机数组
    作者:ls富
'''
import random
def random_sum():
    i = 0
    ls = []
    size=int(random.random()*100)
    #设置列表个数
    while i < size :
        #随机增加元素(一个减一个)
        ls.append(int(random.random()*100-random.random()*100))
        i+=1
    return ls

if __name__ == '__main__':
   print(random_sum())

异或运算

1:与(&),按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0

2:或(|),按位或运算符:只要对应的两个二进位有一个为1时,结果位就为1

3:异或(^),按位异或运算符:当两对应的二进位相异时,结果为1

4:取反(~),按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

bs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BP神经网络算法可以用于解决分类和回归问题。下面是BP算法实现异或运算的步骤和代码: 1.问题: 我们需要训练一个BP神经网络来实现异或运算,即输入两个二进制数,输出它们的异或结果。 2.分析: 我们可以使用一个包含两个输入节点、两个隐藏节点和一个输出节点的三层神经网络来解决这个问题。我们需要使用反向传播算法来训练神经网络,以便它可以正确地计算异或运算。 3.代码: ```python import numpy as np # 定义sigmoid函数 def sigmoid(x): return 1 / (1 + np.exp(-x)) # 定义sigmoid函数的导数 def sigmoid_derivative(x): return x * (1 - x) # 定义BP神经网络类 class NeuralNetwork: def __init__(self, x, y): self.input = x self.weights1 = np.random.rand(self.input.shape[1], 2) self.weights2 = np.random.rand(2, 1) self.y = y self.output = np.zeros(self.y.shape) def feedforward(self): self.layer1 = sigmoid(np.dot(self.input, self.weights1)) self.output = sigmoid(np.dot(self.layer1, self.weights2)) def backprop(self): d_weights2 = np.dot(self.layer1.T, (2 * (self.y - self.output) * sigmoid_derivative(self.output))) d_weights1 = np.dot(self.input.T, (np.dot(2 * (self.y - self.output) * sigmoid_derivative(self.output), self.weights2.T) * sigmoid_derivative(self.layer1))) self.weights1 += d_weights1 self.weights2 += d_weights2 def train(self, epochs): for i in range(epochs): self.feedforward() self.backprop() def predict(self, x): self.input = x self.feedforward() return self.output # 训练数据 X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]]) y = np.array([[0], [1], [1], [0]]) # 创建神经网络对象并训练 nn = NeuralNetwork(X, y) nn.train(10000) # 预测新数据 x_test = np.array([[0, 1]]) print(nn.predict(x_test)) # 输出:[[0.99676596]] ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值