算法学习

以下是为您整理出来关于【算法学习】合集内容,如果觉得还不错,请帮忙转发推荐。

【算法学习】技术教程文章

算法学习——二项式定理

今天考场上要用到二项式定理。。。。然而并不会。先放个式子在这里吧。下次再填坑 $$(x + y) ^ k = \sum_{i = 0}^{k}C_{k}^{i} \cdot x^i \cdot y^{k - i}$$ 一个很容易理解的推导方式是:$(x + y) ^ k = (x + y)(x + y)(x + y)...$,化简之后的每一个数都是分别从每个括号中取一个数出来相乘得到的, 假设这个数=$x ^ i \cdot y^{k - i}$,那么取法有$C_{k}^{i}$种,也就是有$C_{k}^{i}$个这么大的数,然后再枚举一下i,总的式子就是...

数据结构与算法学习——基本算法思想

常用的算法思想: (1)穷举算法思想(Exhaustive Attack method) (2)递推算法思想 (3)递归算法思想 (4)分治算法思想 (5)概率算法思想 —————————————————————————————— 1.穷举算法思想 最简单的一种算法,效率不高,适合一些没有明显规律可循的场合 步骤: (1)对于一种可能的情况,计算其结果 (2)判断结果是否满足,不满足跳回(1)进行下一种可能 —————————————————...

算法学习——贪心算法之删数字(求最小值)【代码】【图】

算法描述在给定的n位数字,删除其中的k位数字( k < n),使得最后的n-k为数字为最小值(原次序不变)算法思路考虑到是要移出数字,我们使用链表设计此算法较为方便,链表可以直接移出某个位置的元素 使用贪心算法,每一步都要达到最优 从最高位开始,若下一位比上一位要小,则将上一位的数字移出,结束之后再次从最高位开始这里需要注意,会有特例 当输入从小到大的的一个数的时候,上述算法将会无法运行,比如123456,删除1个数字...

数据结构与算法学习笔记之后进先出的“桶”【代码】【图】

前言 栈最为一种的常用的数据结构,用“桶”来形容最合适不过;今天我们就来学习一下 正文 一、栈的定义? 1.“后进先出,先进后出”的数据结构。2.从操作特性来看,是一种“操作受限”的线性表,只可以在一端插入和删除数据。 二、为什么需要栈? 1.任何数据结构都是对特定应用场景的抽象,栈是一种操作受限的数据结构,其操作特性用数组和链表均可实现,但却暴露太多的操作接口,使用时容易出错; 2.当某个数据集合只涉及在一...

数据结构与算法学习笔记之写链表代码的正确姿势(下)

前言 想成功你就得有决心,并有方法和技巧的付出精力。 正文 如何优雅的写出链表代码? 一、理解指针或引用的含义 1.含义: 将某个变量(对象)赋值给指针(引用),实际上就是就是将这个变量(对象)的地址赋值给指针(引用)。 指针中存储了这个变量的内存地址,指向了这个变量,通过指针就能找到这个变量 2.示例 p—>next = q; 表示p节点的后继指针存储了q节点的内存地址。p—>next = p—>next—>next; 表示p节点的后继指针...

小白最优化学习(三) 算法学习 一维搜索算法【图】

一、一维搜索算法1、确定搜索方向,即按照一定的规则,构造f在点处的下降方向作为搜索方向 2、确定步长因子,是目标函数值有某种意义下的下降 3、令,若满足某种终止条件则终止迭代,得到近似最优解,否则,重复上述步骤在上述迭代算法中,当方向确定后,涉及到求一个步长,使得目标函数值减小(极小值问题),这就是在一直线上求目标函数的极小点,即极小化。则称为alpha对变量的一维搜索问题,或称为线搜索。 二、一个例子 设目标...

不定期周末福利:数据结构与算法学习书单

针对入门的趣味书:《大话数据结构》、《算法图解》 针对特定编程语言的教科书:《数据结构与算法分析》(有C、C++、Java三个版本) 面试必刷的宝典:《剑值offer》、《编程珠玑》、《编程之美》 经典大部头:《算法》,虽说《算法导论》这本书也确实经典,但作为入门书籍,并不是很推荐 殿堂级经典:《计算机程序设计艺术》 闲暇阅读:《算法帝国》、《数学之美》、《算法之美》 https://github.com/wangzheng0822/algo

java算法学习记录之冒泡排序法

从这篇文章开始我将依次记录我学习数据结构并用java来实现相关算法的源代码,算是对自己学习的一个记录,也希望对其他初学者有帮助,大家一起进步!同时我保证我写的代码是自己在idea里手写并测试通过。 此篇文章我记录最简单也是最常用的冒泡排序法,后面再记录其它排序方法。import java.util.Random;//冒泡排序 public class MaopaoSort {public static void main(String[] args) {//初始化 1到100int[] array = new int[50];fo...

数据结构与算法学习笔记之 从0编号的数组【代码】

前言 数组看似简单,但掌握精髓的却没有多少;他既是编程语言中的数据类型,又是最基础的数据结构; 一个小问题:为什么数据要从0开始编号,而不是 从1开始呢? 正文 带着问题进入学习 如何实现随机访问? 什么是数组?数组(array)是一种线性表数据结构,它用一组连续的内存空间来储存一组具有相同类型的数据。我们从定义来分析: 线性表: 是数据排成像一条线一样的结构。每个线性表上的数据最多有前后两个方向。诸如数组,链...

数据结构与算法学习笔记之 适合大规模的数据排序【图】

数据结构与算法学习笔记之 适合大规模的数据排序前言  在数据排序的算法中,不同数据规模应当使用合适的排序算法才能达到最好的效果,如小规模的数据排序,可以使用冒泡排序、插入排序,选择排序,他们的时间复杂度都为O(n2),大规模的数据排序就可以使用归并排序和快速排序,时间复杂度为O(nlogn)。今天我们就来看一下归并排序和快速排序。正文  归并排序的原理  核心思想(分治思想):    排序数组,将数组从中间...