算法
小关学长
这个作者很懒,什么都没留下…
展开
-
剑指offer-67-剪绳子(Python,Go实现)
题目描述给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1,m<=n),每段绳子的长度记为k[1],…,k[m]。请问k[1]x…xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。输入描述:输入一个数n,意义见题面。(2 <= n <= 60)输出描述:输出答案。算法思路1 贪心算法尽可能的分成长度为3的绳子,相当于对3取余,count为可以分成多少个3,n原创 2020-08-03 22:27:24 · 329 阅读 · 0 评论 -
python实现插值查找(递归、迭代)
算法思想二分查找的改进,但中间值计算改成了利用公式预测数据所在的位置,该方法假设数据分布是呈线性的,因此由公式(1)得到中间值 mid 的计算公式(2)。mid−lowhigh−low=value−data[low]data[high]−data[low](1)\frac{mid-low}{high-low}=\frac{value-data[low]}{data[high]-data[low]}(1)high−lowmid−low=data[high]−data[low]value−data[low原创 2020-06-06 10:27:34 · 806 阅读 · 0 评论 -
python实现二分查找(递归、迭代)
算法思想将数据分成两部分,并比较中间值与待查找数据大小,如果小于则在前半段查找,如果大于则在后半段查找。经过数次分割直到中间值等于待查数据或找不到待查数据为止。分析时间复杂度:O(logn)。数据必须是有序的,并且所有数据必须加载到内存中。适用于不需增删的静态数据。注:来源于吴灿铭《图解数据结构-使用Python》代码实现import randomclass Search(object): def binary_search(self, data, value):原创 2020-06-05 10:10:48 · 1397 阅读 · 0 评论 -
python实现图的广度优先搜素算法并打印最短路径
from collections import dequedef create_graph(): """采用邻接表方式储存图""" graph = {} graph['A'] = ['B', 'C'] graph['B'] = ['D'] graph['C'] = ['E'] graph['D'] = [] graph['E'] = [...原创 2019-11-24 10:23:24 · 835 阅读 · 1 评论 -
python实现插入排序算法
class Sort: # 插入排序0 # 算法思想:将当前元素插入到左边以排序好的序列中,插入过程中两两比较交换位置实现元素插入到所在位置 # 算法特性: # (1)与初始状态有关 # 时间复杂度:O(n^2) # 空间复杂度:T(1) # 稳定性:稳定 def insertion0(self, m): length...原创 2019-03-05 21:28:45 · 441 阅读 · 0 评论 -
python实现选择排序算法
class Sort: # 选择排序 # 算法思想:不断寻找剩余元素中最小的一个与当前位置元素交换 # 算法特性: # (1)运行时间与输入的初始状态无关 # (2)数据移动是最少的 # 时间复杂度:O(n^2) # 空间复杂度:T(1) # 稳定性:不稳定 def selection(self, m): #...原创 2019-03-05 16:13:24 · 699 阅读 · 0 评论 -
感知机学习算法的原始形式及其Python实现
1 描述(1)模型:其中 w * x 表示 w 与 x 的内积,sign 为符号函数,当 w * x + b >= 0时,为 1,否则为 -1。(2)策略:损失函数:其中 M 为误分类点的集合。(3)算法:因此将问题转化为通过调节参数 w, b使得损失函数极小化,从而使得 M 中没有误分类的点。2 思路(1)选取初值w,b(2)在训练集中选取数据(x,y)(3)如...原创 2019-02-20 14:47:30 · 1638 阅读 · 0 评论 -
手动搭建神经网络应用于手写数字识别
import numpy as npimport scipy.specialimport matplotlib.pyplot as pltfrom PIL import Imageclass neuralNetwork : # 用于神经网络初始化 def __init__(self, inputnodes, hiddennodes, outputnodes, learn...原创 2019-01-26 11:26:35 · 1622 阅读 · 16 评论 -
K近邻算法(KNN)的简单python实现
1 算法思想给定测试样本,基于某种距离度量找出训练集中与其最靠近的 k 个训练样本,然后基于这 k 个“邻居”的信息来进行预测。通常,在分类任务中可使用“投票法”,即选择这 k 个样本中出现最多的类别标记作为预测结果;在回归任务中可使用“平均法”,即将这 k 个样本的实值输出标记的平均值作为预测结果;还可以基于距离远近进行加权平均或加权投票,距离越近的样本权重越大。(来源于周志华《机器学习》第2...原创 2018-12-09 17:20:33 · 1283 阅读 · 1 评论 -
作业分配问题之回溯算法
1 问题描述有n份作业分配给n个人去完成,每人完成一份作业。假定第i个人完成第j份作业需要花费cij时间, cij>0,1≦i,j≦n。试设计一个回溯算法,将n份作业分配给n个人完成,使得总花费时间最短。2 算法实现import java.io.*;import java.util.*;public class Demo { public int n; /...原创 2018-12-01 16:01:13 · 3024 阅读 · 5 评论 -
利用哈夫曼编码对文件进行压缩解压之贪心算法java实现
1 算法实现import java.io.BufferedReader;import java.io.FileReader;import java.util.*;//哈夫曼树类class HaffmanTree { public static final int MAXVALUE = 1000;// 最大权值 public int nodeNum; // 叶子结点个数 publ...原创 2018-12-01 15:56:50 · 1816 阅读 · 2 评论 -
0-1背包问题之动态规划算法java实现
1 算法实现import java.io.BufferedReader;import java.io.FileReader;import java.util.ArrayList;import java.util.Scanner;public class Demo { // 记录背包的总容量 public int packageweight; // 记录商品总数 publi...原创 2018-12-01 15:51:54 · 5681 阅读 · 0 评论 -
邮局选址问题之分治算法java实现
1 问题描述在一个按照东西和南北方向划分成规整街区的城市里,n个居民点散乱地分布在不同的街区中。用x坐标表示东西向,用y坐标表示南北向。各居民点的位置可以由坐标(x,y)表示。要求:为建邮局选址,使得n个居民点到邮局之距离的总和最小。提示:带权中位数(分治算法)2 算法思想利用分治算法思想将问题分解成分别对x轴,y轴求其带权中位数,然后在把他们组合起来,即为所求。3 java实现代码i...原创 2018-12-01 15:42:51 · 6012 阅读 · 4 评论 -
平方根之牛顿迭代法推导与实现
1 算法推导注:手写拍照节省时间也比较灵活2 算法java实现public class sqrt { public static void main(String[] args) { System.out.println(getNumberSqrt(12)); } public static double getNumberSqrt(double n){ // 如果c小于0 ...原创 2018-11-27 16:23:11 · 882 阅读 · 0 评论 -
最大公约数之欧几里得算法证明与java实现
1 算法的自然语言描述计算两个非负整数 p 和 q 的最大公约数:若 q 是0,则最大公约数为 p 。否则,将 p 除以 q 得到的余数 r , p 和 q 的最大公约数即为 q 和 r 的最大公约数。2 算法证明注:gcd(a, b)即为 a 与 b 的最大公约数3 算法java实现public class gcd { public static void main(String...原创 2018-11-26 19:12:15 · 391 阅读 · 0 评论 -
线性回归之最小二乘法举例推导及python实现
1 核心思想通过最小化方差,使得拟合结果无限接近目标结果。2 通过一元线性方程举例说明3 通过python实现一元线性拟合import matplotlib.pyplot as pltimport random# 用于存储x,y拟合数据x = []y = []# 数据个数n = 10# 随机生成x,yfor i in range(n): x.append(ra...原创 2018-11-25 16:16:30 · 1587 阅读 · 1 评论