算法 - 技术教程文章

替换空格算法

#include "stdio.h" #include "string.h" #include <stdlib.h> char* change(char *str) {//判断有多少空格int i=0;char *p=str;while(*p){if((*p)==‘ ‘)i++;p++;}//申请新空间char *temp=(char *)malloc(strlen(str)+3*i+1);//开始置换p=str;int k=0;while((*p)){if((*p)!=‘ ‘){temp[k]=(*p);}else{temp[k]=‘%‘;k++;temp[k]=‘2‘;k++;temp[k]=‘0‘;}p++;k++;}temp[k]=‘\0‘;return temp;} int main() {char* out="i am a...

遗传算法【图】

遗传算法,很多博客把生物的遗传原理讲得相当到位,而对于算法的详细步骤及应用却避之不谈。本博客少量提及生物原理,然后介绍算法步骤及应用。写得很匆忙,暂时这么理解,多有错误,望读者见谅。一、生物原理及数学表示  遗传算法,从生物角度看,对物种的选择是,“物竞天择,适者生存”。亲代通过基因重组和基因突变遗传和变异,产生子代。在子代中,适应能力强的继续生存,适应能力弱的死亡。循环如此,最终,有利基因得以保...

Spark 源码解析:TaskScheduler的任务提交和task最佳位置算法【代码】

上篇文章《 Spark 源码解析 : DAGScheduler中的DAG划分与提交》介绍了DAGScheduler的Stage划分算法。本文继续分析Stage被封装成TaskSet,并将TaskSet提交到集群的Executor执行的过程在DAGScheduler的submitStage方法中,将Stage划分完成,生成拓扑结构,当一个stage没有父stage时候,会调用DAGScheduler的submitMissingTasks方法来提交该stage包含tasks。首先来分析一下DAGScheduler的submitMissingTasks方法1.获取Task的最佳计算位...

算法--倒三角

下面是一个由*号组成的4行倒三角形图案。要求:1、输入倒三角形的行数,行数的取值3-21之间,对于非法的行数,要求抛出提示“非法行数!”;2、在屏幕上打印这个指定了行数的倒三角形。  *******  *****    ***    * aa: Console.Clear(); Console.WriteLine("请输入倒三角形的行数: 行数的取值在3-21之间"); int i = int.Parse(Console.ReadLine()); if (i < 3 || i > 21...

ML: 降维算法-LDA【代码】【图】

判别分析(discriminant analysis)是一种分类技术。它通过一个已知类别的“训练样本”来建立判别准则,并通过预测变量来为未知类别的数据进行分类。判别分析的方法大体上有三类,即Fisher判别、Bayes判别和距离判别。Fisher判别思想是投影降维,使多维问题简化为一维问题来处理。选择一个适当的投影轴,使所有的样品点都投影到这个轴上得到一个投影值。对这个投影轴的方向的要求是:使每一组内的投影值所形成的组内离差尽可能小,而...

4.2 串的模式匹配算法【代码】【图】

<?php header("content-type:text/html;charset=utf-8"); class Linear_string{/*** 串模式匹配算法**包括* 1.串的初始化 __contruct()* 2.朴素的模式匹配算法 index()* 3.KMP模式匹配算法* 4.改进的KMP模式匹配算法*/private$string;private$length;//构造函数publicfunction __construct($string){$this->length =strlen($string);$this->string = $string;}//朴素的模式匹配算法publicfunction index($string,$pos){if($pos<0 |...

数据结构&算法(二)_算法基础之前传(递归、时间复杂度、空间复杂度、二分查找)【代码】【图】

什么是算法:  间而言之算法(Algorithm):一个计算过程,解决问题的方法 递归的两个特点:  调用自身  结束条件递归示例:def func(x):if x==0:print("我的小鲤鱼",end=‘‘)else:print("抱着",end=‘‘)func(x-1)print("的我",end="")func(5)递归示例一:我的小鲤鱼‘‘‘ 112358132134 输出长度为 n 的斐波那契数列 ‘‘‘ #方式一:while 循环 def fibo(num):a=1b=1i=1while i<=num:print(a,end="")a,b = b,a+bi+=1 # ...

第五周反向传播算法【图】

关于第5周反向传播算法的一些争论与思考小耿2015-03-16 16:58 第5周介绍了神经网络的反向传播算法。由于介绍得比较简要,很多地方没有讲透(众:You can you up!),后来C站论坛里有几个网友开始争论其中的公式有点奇怪,究竟是讲错了还是另有原因(最后结论似乎应该是没讲错)。全程围观的耿先生记录了相关的一些要点。背景:反向传播算法就是说好比你有一个神经网络,输入层 -> 隐藏层 -> 输出层酱紫。我们现在把所有系数初始化...

算法_图的深度优先搜索和广度优先搜索【代码】【图】

一.图的基本数据结构    图是由一组顶点和一组能够将两个顶点相互连接的边所构成的,一般使用0~V-1这样的数字形式来表示一张含有V个顶点的图.用v-w来指代一张图的边,由于是无向图,因此v-w和w-v是同一种边的两种表示方法.无向图是指边没有方向的图结构在无向图中,边仅仅表示的是两个顶点之间的连接.图的数据结构的可视化如下图所示(其中边上的箭头没有任何意义): ...

机器学习|算法模型——K近邻法(KNN)【代码】

1、基本概念K近邻法(K-nearest neighbors,KNN)既可以分类,也可以回归。  KNN做回归和分类的区别在于最后预测时的决策方式。 KNN做分类时,一般用多数表决法: 采用车辆不同特征值之间的距离方法进行分类 KNN做回归时,一般用平均法。   基本概念如下:存在一个样本数据集合,所有特征属性已知,并且样本集中每个对象都已知所属分类。对不知道分类的待测对象,将待测对象的每个特征属性与样本集中数据对应的特征属性...

4 GC算法与种类【图】

原文:https://www.cnblogs.com/likevin/p/10186754.html

算法第三章实践报告【代码】【图】

题目: 算法描述: 1 #include <iostream>2usingnamespace std;3 4int main() {5int n;6 cin >> n;7int a[n][n];8int m[n][n];9for(int i = 0; i < n; i++) { 10for(int j = 0; j <= i; j++) { 11 cin >> a[i][j]; 12 } 13 } 14for(int j = 0; j < n; j++) { 15 m[n-1][j] = a[n-1][j]; 16 } 17for(int i = n - 2; i >= 0; i--){ 18for(int j = 0; j <= i; j++) { 19if(m[i+1][j]>m[i+...

第二天- 最基础的分类算法-k近邻算法 kNN【图】

思想极度简单应用数学知识少效果好(缺点?)可以解释机器学习算法使用过程中的很多细节问题更完整的刻画机器学习应用的流程原文:https://www.cnblogs.com/wuxiping2019/p/12056562.html

剑指offer39:平衡二叉树【代码】

1 题目描述  输入一棵二叉树,判断该二叉树是否是平衡二叉树。2 思路和方法  平衡二叉树,又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。这个方案很好的解决了二叉查找树退化成链表的问题,把插入,查找,删除的时间复杂度最好情况和最坏情况都维持在O(logN)。但是频繁旋转会使插入和删除牺牲掉O(logN)左右的时间,不过相对...

数据、结构、算法

大学期间的一本蓝色为主色调的课本,长约20厘米,宽约13厘米,封面中央写着“数据结构”四个大黑字。犹记当时老师第一节课,意味深长地说“这是一门基础课,很重要,虽然你们现在可能不能完全理解”。那时,我相信老师说的很重要的话,但是我心中充满“不是所有人都能理解,但是我能”的自信。~~,每每回头瞅瞅这门知识的时候,都感觉到了需要自信,也需要踏实细节。不同时期对于“数据结构与算法”可能会有不同深度、不同层次的理...

【算法总结】递归【代码】

算法总结-递归定义:所谓递归即函数直接或间接地调用函数本身,调用的方式按照问题的不同人为定义,这种调用方式被称为递归方式。同时,为了不使这样的递归无限的发生,我们必须设定递归的出口,即当函数达到某种条件时停止递归。问题的求解过程->划分成相同性质的子问题的求解->子问题的求解过程可以很容易地求出->这些子问题的解就构成原问题的解。递归和枚举的区别:枚举——把一个子问题划分成一组子问题,依次对这些子问题求解...

声明式编程:程序=数据+逻辑(what)+算法(控制+计算)

接口:what;实现:算法;指令; 命令式编程通过一系列改变程序状态的指令来完成计算,声明式编程只描述程序应该完成的任务。命令式编程模拟电脑运算,是行动导向的,关键在于定义解法,即“怎么做”,因而算法是显性而目标是隐性的;声明式编程模拟人脑思维,是目标驱动的,关键在于描述问题,即“做什么”,因而目标是显性而算法是隐性的。 https://www.cnblogs.com/feng9exe/p/10190716.html 原文:https://www.cnblogs.com/fen...

algorithm---算法设计,数据结构基本概念-之我的归纳 by whb_咸菜---圣斗士啊斌斌斌斌

算法的定义从广泛上来说,可以说是完成一件事情的方法或步骤。在计算机的角度说,算法是一组有限的指令集组成的过程。 -- 有限的。算法有五个特性: 确定性,可行性,有穷性,and 输入,输出!必须指出的是,算法可以改变我们程序的运行时间,好的算法可以节省我们很多时间,使我们的程序运行起来更行云流水,得心应手。但是算法不是影响我们程序运行效果的唯一因为,受其他因为影响,比如机器质量,语言,编译程序,程序员的...

POJ-1087(最大流+EK算法)【代码】

A Plug for UNIXPOJ-1087这一题也是最大流的应用,但是题目有点绕。题目的意思就是有插座和插头,只不过这里使用设备取代了插头。只有插座和设备进行匹配了。题目要注意的是那个适配器的问题,适配器给出的是 A,B 的模式,但是这里并不是指A可以取代B而是指B可以取代A,所以建图的时候要注意这个细节。还有一个问题就是题目的规模是未知的,所以maxn尽量设置的较大,这样才保险。#include<iostream> #include<algorithm> #include<...

解析百度823算法升级 努力打造高质量站点

从外而内到从内而外的转移   首先,对于百度823算法升级,我想从页面重要性开始说起,从而以Title延伸,进一步说明823百度算法升级正在做什么,以及日后演绎的大体路线是什么。页面重要性说明大体是这样的,如果指向一个页面的链接足够多的话,说明这个页面是重要的、受用户欢迎的。在此我首先抛出一个疑问,里面什么内容你怎么知道?指向一个页面的链接足够多的话,这个页面是重要的、是受用户欢迎的,我个人认为到底是不是这样首...

Levenshtein距离【编辑距离算法】字符串相似度算法

指两个字串之间,有一个转成另一个所需的最少编辑操作的次数。 算法过程str1或str2的长度为0返回另一个字符串的长度。 if(str1.length==0) return str2.length; if(str2.length==0) return str1.length;初始化(n+1)*(m+1)的矩阵d,并让第一行和列的值从0开始增长。扫描两字符串(n*m级的),如果:str1[i] == str2[j],用temp记录它,为0。否则temp记为1。然后在矩阵d[i,j]赋于d[i-1,j]+1 、d[i,j-1]+1、d[i-1,j-1]+temp三者的最小...

求重复数算法思路

关于求重复数,我们先来看看两道常见的题1、有101个数,为[1,100]之间的数,其中一个数是重复的,如何寻找这个重复的数,其时间复杂度和空间复杂度是多少?2、1-N(N最大32000,且未知),内存只有4K,找出其中的重复数找重复数,基本的思路有四个,第一种思路,建立布尔数组,用每一位的下标来表示某个数的值,用每一位的值来表示该数是否重复。这种思路适合数组中最大数不大的情况。一旦最大数过大,那么我们需要建立的布尔数组...

排序算法总结【图】

在看数据结构导论的时候,你会不会感觉算法有点多,这么多算法什么时候能够记住?如果你这样想就错了。米老师曾说:“记是记不住的。”看的多了也就记住了。当然还有另外一种思考模式,以自己的理解去学习,知其本质,抓住核心。在此对排序这一块做了一个小小的总结: 总结:其实很多时候我们根本不用去记,抓住核心本质转换成自己的理解方式也就记住了,就像是两个数交换,用一个变量作为中转站,依次交换值就可以。原文:http...

最小生成树~kruskal算法

最小生成树~kruskal算法 生成树的概念: 给定一个无向图,如果它的某个子图中任意两个顶点互相连通,并且是一棵树(即不存在环),则此子图便称为一棵生成树。该无向图的生成树并不是唯一存在的,因为其可能有多个子图满足生成树的条件;并且,一个无向图的最小生成树(即生成树的总权值最小)可能也不是唯一的,因为可能存在多条边的权值相等,且都是最小。求解最小生成树有两种方法:一个是从边入手的krus...

页面置换算法及例题【图】

一、页面置换算法不适当的算法可能会导致进程发生“抖动”:即刚被换出的页很快又要被访问,需要将他重新调入,此时又需要再选一页调出。而此刚被调出的页面很快又被访问,又需将它调入,如此频繁地更换页面,以致一个进程在运行中把大部分时间都花费在页面置换工作上,我们称该进程发生了“抖动”。一个好的页面置换算法应该具有较低地页面更换频率。从理论上讲,应将哪些以后不再会访问地页面换出,或把那些在较长时间内不会再访...

OpenCV导向滤波实现(Guided Filter)代码,以及使用颜色先验算法去雾【图】

本文主要介绍导向滤波,但是在网上看这算法还能去雾,不知道是具体是怎么利用导向滤波实现去雾的,希望过来人指点迷津,这快主要是重写了导向滤波应用与彩色图像的部分代码,希望与大家共同交流。 论文主要如下:Kaiming He, Jian Sun, Xiaoou Tang. Single Image Haze Removal Using Dark Channel Prior大致内容是提出了一个叫做暗原色先验的东西来对有雾图像进行处理,十分巧妙,有兴趣者可以看看。这里使用OpenCV实现文中的去雾...

排序算法大集锦_插入类——直接插入排序【图】

这一系列博客的特点就是——给出每趟排序的结果 本来想着好好写一下过程,弄个图片什么的,不过觉得网上的解析太多了,都比较好。《算法导论》上面那个比喻,比做打扑克牌的插入新牌,就比较形象。所以这些博客就算是对自己的总结吧。#include <stdio.h>void InsertSort(int *m, int n) {int i,j,temp;for(i=1;i<n;i++){temp=m[i];j=i-1;while(j>=0 && temp<m[j]){m[j+1]=m[j];j--;}m[j+1]=temp; for(int t=0;t<10;t++)print...

数据结构与算法知识点

<转>一.数据结构部分1.数组和链表的区别。(很简单,但是很常考,记得要回答全面)C++语言中可以用数组处理一组数据类型相同的数据,但不允许动态定义数组的大小,即在使用数组之前必须确定数组的大小。而在实际应用中,用户使用数组之前有时无法准确确定数组的大小,只能将数组定义成足够大小,这样数组中有些空间可能不被使用,从而造成内存空间的浪费。链表是一种常见的数据组织形式,它采用动态分配内存的形式实现。需要时可以...

【算法】【排序】【交换类】快速排序QuickSort【代码】

#include<stdio.h>//快速排序 int main(){int a[]={2,1,5,4,3,8,9,6,7};int* b=a-1+sizeof(a)/4; //基准指针 int* i=a-1; //慢指针 int* j=a; //快指针 int QS(int* tb,int* ti,int* tj);QS(b,i,j);for(int k=0;k<sizeof(a)/4;k++){printf("%d ",a[k]);} }//QuickSort int QS(int* tb,int* ti,int* tj){//如果数组空或只有一个数不用排序 if(tb<=tj){return0;}void swap...

算法第四章上机实践报告【代码】

一、实践题目:删数问题二、问题描述: 给定一个n位的正整数a,去掉其中任意k(k≤n) 个数字后,剩下的数字按照原次序排列成一个的新的正整数。在给定的n位正整数a和正整数k的情况下,输出完成该操作后剩下的正整数。三、算法描述: 正整数的位数不定,用long long去存不一定存的下,所以用一个字符数组str[]来存储。此处运用一种贪心策略,不停的对这个整数进行扫描,当发现当前位的后一位比当前位小的情况,将当前位...