关系运算

十大经典排序算法

青春壹個敷衍的年華 提交于 2019-12-21 02:53:29
转自https://blog.csdn.net/hellozhxy/article/details/79911867 0、排序算法说明0.1 排序的定义 对一序列对象根据某个关键字进行排序。 0.2 术语说明 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面; 不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面; 内排序:所有排序操作都在内存中完成; 外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行; 时间复杂度: 一个算法执行所耗费的时间。 空间复杂度:运行完一个程序所需内存的大小。 例子 数据量低时,O(1) 和 O(n^2)的区别可以忽略不计。比如,你有个算法要处理2000条元素。 O(1) 算法会消耗 1 次运算 O(log(n)) 算法会消耗 7 次运算 O(n) 算法会消耗 2000 次运算 O(n*log(n)) 算法会消耗 14,000 次运算 O(n^2) 算法会消耗 4,000,000 次运算 O(1) 和 O(n^2) 的区别似乎很大(4百万),但你最多损失 2 毫秒,只是一眨眼的功夫。确实,当今处理器每秒可处理上亿次的运算。这就是为什么性能和优化在很多IT项目中不是问题。 我说过,面临海量数据的时候,了解这个概念依然很重要。如果这一次算法需要处理 1,000,000 条元素

JAVA的8种基本数据类型

安稳与你 提交于 2019-12-20 23:16:35
JAVA基本类型 8种基本数据类型 想要更多面试题和学习资料的可以私聊联系我,大家一起交流学习! Java语言有8种基本数据类型, 分别用于存储整数、浮点数、字符数据和布尔类型数据。需要注意的是: 现在所介绍的仅仅是基本数据类型,后续还会介绍很多非基本数据类型。基本数据类型如图 – 1所示: 图- 1 从图- 1中可以看出, 基本数据类型主要分为4大类 (整数类型、浮点类型、char、boolean), 整数类型又分为了4小类(byte、short、int、long), 浮点类型也分了2小类(float、double),这些数据类型的区别是怎样的?通过图– 2展示了这8种数据类型的存储空间及使用场景: 图- 2 在如上这8种数据类型中,最常用的有5种,分别为int、long、double、char、boolean。其余的数据类型几乎不用,要求对这5种基本数据类型重点掌握,其余的数据类型,有兴趣了解就可以了。 int类型 2.1. int类型 int是最常用的整数类型,一个int类型的变量占用4个字节,即32位的内存空间。Int的最大表示范围为:-231~231-1,即-2147483648 ~2147483647,大约正负21个亿多些。 2.2. 整数直接量是int类型 所谓整数直接量(literal)就是直接写出的整数,例如:下面的语句中,100就是直接量。 int a =

JAVA的8种基本数据类型

不打扰是莪最后的温柔 提交于 2019-12-20 22:07:35
JAVA基本类型 8种基本数据类型 Java语言有8种基本数据类型, 分别用于存储整数、浮点数、字符数据和布尔类型数据。需要注意的是: 现在所介绍的仅仅是基本数据类型,后续还会介绍很多非基本数据类型。基本数据类型如图 – 1所示: 图- 1 从图- 1中可以看出, 基本数据类型主要分为4大类 (整数类型、浮点类型、char、boolean), 整数类型又分为了4小类(byte、short、int、long), 浮点类型也分了2小类(float、double),这些数据类型的区别是怎样的?通过图– 2展示了这8种数据类型的存储空间及使用场景: 图- 2 在如上这8种数据类型中,最常用的有5种,分别为int、long、double、char、boolean。其余的数据类型几乎不用,要求对这5种基本数据类型重点掌握,其余的数据类型,有兴趣了解就可以了。 2. int类型 2.1. int类型 int是最常用的整数类型,一个int类型的变量占用4个字节,即32位的内存空间。Int的最大表示范围为:-231~231-1,即-2147483648 ~2147483647,大约正负21个亿多些。 2.2. 整数直接量是int类型 所谓整数直接量(literal)就是直接写出的整数,例如:下面的语句中,100就是直接量。 int a = 100; 关于整数直接量,需要注意如下要点:

数据结构之查找运算

Deadly 提交于 2019-12-20 07:26:38
查找运算 查找 线性表的查找 顺序查找(都是从后往前找) 折半查找(二分查找) 分块查找(索引顺序查找) 数表的查找 哈希表(散列表的查找) 查找 查找表可分为两类 静态查找表 仅作查询和检索操作的查找表。 动态查找表 有时在查询之后,还需要将“查询”结果为“不在查找表中”的数据元素插入到查找表中;或者,从查找表中删除其“查询”结果为“在查找表中”的数据元素。 关键字 是数据元素(或记录)中某个 数据项 的值,用以标识(识别)一个数据元素(或记录)。 若此关键字可以识别唯一的一个记录,则称之谓“主关键字”。 若此关键字能识别若干记录,则称 之谓“次关键字”。 线性表的查找 顺序查找(都是从后往前找) 顺序查找方法既适用于线性表的 顺序存储结构 ,又适用于线性表的 链式存储结构 。( 无序 ) 时间复杂度为O(n)。 在不等概率查找的情况下,ASLss 在 Pn≥Pn-1≥···≥P2≥P1时取极小值 若查找概率无法事先测定,则查找过程采取的改进办法是,在每次查找之后,将刚刚查找到的记录直接移至表尾的位置上。 折半查找(二分查找) 折半查找要求线性表必须才用 顺序存储结构 ,而且表中元素按关键字 有序 排列。 时间复杂度为O(log2 n)。 算法步骤: 置查找区间初值,low为1,high为表长。 当low小于等于high时,循环执行以下操作: mid取值为low和high的中间值

点积与叉乘的运算与物理意义

妖精的绣舞 提交于 2019-12-20 02:29:30
原文:http://blog.csdn.net/jacke121/article/details/55804353 向量是由n个实数组成的一个n行1列(n*1)或一个1行n列(1*n)的有序数组; 向量的点乘,也叫向量的内积、数量积,对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,点乘的结果是一个标量。 点乘公式 对于向量a和向量b: a和b的点积公式为: 要求一维向量a和向量b的行列数相同。 点乘几何意义 点乘的几何意义是可以用来表征或计算两个向量之间的夹角,以及在b向量在a向量方向上的投影,有公式: 推导过程如下,首先看一下向量组成: 定义向量: 根据三角形余弦定理有: 根据关系c=a-b(a、b、c均为向量)有: 即: 向量a,b的长度都是可以计算的已知量,从而有a和b间的夹角θ: 根据这个公式就可以计算向量a和向量b之间的夹角。从而就可以进一步判断这两个向量是否是同一方向,是否正交(也就是垂直)等方向关系,具体对应关系为: a·b>0 方向基本相同,夹角在0°到90°之间 a·b=0 正交,相互垂直 a·b<0 方向基本相反,夹角在90°到180°之间 叉乘公式 两个向量的叉乘,又叫向量积、外积、叉积,叉乘的运算结果是一个向量而不是一个标量。并且两个向量的叉积与这两个向量组成的坐标平面垂直。 对于向量a和向量b: a和b的叉乘公式为: 其中: 根据i

js初级课堂笔记

。_饼干妹妹 提交于 2019-12-19 06:11:25
js简介 web的标准 结构 表现 行为 三者相分离 网景公司 sun公司 1. js发展 JavaScript诞生于1995年,起初它的目的是--处理以前由服务器端负责的一些表单验证,当时的软件环境, 都是由服务器进行数据的验证等处理的。在那个年代走在最前端的网景(Netscape) 公司决定着手开发一种客户端验证的语言。 布兰登·艾奇 -- JavaScript之父 2.js概念 解释型的脚本语言,是一种动态类型、弱类型、基于原型的语言,支持隐式类型转换 3.引入方法 <script type="text/javascript" src=""></script> 内部引入 head里<script></script> 或 </body> 之前 4.js语言特点 1、脚本编写语言 2、基于对象的语言 3、动态性 4、简单性 5、安全性 6、跨平台性 动态改变页面内容 动态改变页面的外观 验证表单数据 响应事件 5.js组成 DOM 文档对象模型 BOM 浏览器对象模型 ECMAScript 核心 6.引入方式 外部引入 <script type="text/javascript" src="路径"></script> 内部引入 页面头部( < head>里)或者尾部(<body>后面); <script type=" text/javascript">js内容</script>

数字图像处理总结

隐身守侯 提交于 2019-12-18 18:37:20
为什么要用8个亮度级来描述图像? 模拟摄像机的信噪比约为45dB,每一位是6dB,所以8位可以包括有效范围,选择8位像素的另一个好处是:方便把像素存储成字节;而且,8位的A/D转换器最便宜。 怎么定义合适的图像大小N?即分辨率? N太小导致图像锯齿化严重,N太大会导致存储空间的增大,所以需要选择合适的分辨率对图像进行存储,但是你需要了解数字信号处理理论。 为什么要进行傅里叶变换? 将信号映射到分量频率的方法,频率的单位是Hz,用于度量时间上的重复速率。假设有一个音乐中心:声音来自一个CD播放器,经过扩音处理以后在扬声器上进行播放,扬声器可以改变低音或者高音,低音包含低频分量,高音包含高频分量,扬声器的傅里叶变换就是将时间连续的声音信号转换成频率分量的方法。 为什么要这么做呢?我们没用改变信号,只是改变了信号的表达方式,傅里叶变换表明信号是由什么频率组成的,特定频率的幅度就是原信号中该频率的总量,将所有频率对应的正弦波进行叠加就能得到原图像(理论上)。 傅里叶变换怎么表示? 傅里叶变换得到的结果是复数,所以用幅度和相位来表示,幅度等于实部和虚部的平方和求根,相位等于arctan实部/虚部。 实部和虚部的正负性可以确定相位在哪一个象限,幅度表示每一个频率分量的总量,相位描述的是频率分量产生的时序。 卷积运算怎么和傅里叶变换进行结合?

less css框架的学习

混江龙づ霸主 提交于 2019-12-18 11:48:30
什么是LESSCSS LESSCSS是一种动态样式语言,属于CSS预处理语言的一种,它使用类似CSS的语法,为CSS的赋予了动态语言的特性,如变量、继承、运算、函数等,更方便CSS的编写和维护。 LESSCSS可以在多种语言、环境中使用,包括浏览器端、桌面客户端、服务端。 语言特性快速预览: 变量: 变量允许我们单独定义一系列通用的样式,然后在需要的时候去调用。所以在做全局样式调整的时候我们可能只需要修改几行代码就可以了。 LESS源码: @color: #4D926F; #header { color: @color; } h2 { color: @color; } 编译后的CSS: #header { color: #4D926F; } h2 { color: #4D926F; } 混合(Mixins) 混合可以将一个定义好的class A轻松的引入到另一个class B中,从而简单实现class B继承class A中的所有属性。我们还可以带参数地调用,就像使用函数一样。 LESS源码: .rounded-corners (@radius: 5px) { -webkit-border-radius: @radius; -moz-border-radius: @radius; -ms-border-radius: @radius; -o-border-radius:

【小白必看】运算符和表达式详解

时光怂恿深爱的人放手 提交于 2019-12-18 10:25:26
运算符和表达式 算数运算 1.1. 使用%运算符 Java算术运算符除了通常的加(+)、减(-)、乘( )、除(\)之外,还包括取模运算(%)和自增(++)及自减(--)运算。+,-, ,/ 比较简单,实验一下即可。 取模运算(%)意为取余数,只能适用于整数及char类型。示例代码如下所示: 1.// 输出255除以8所得的余数。 2.int n = 225; 3.System.out.println(n % 8); //结果为1 1.2. 使用“++”和“--”运算符 Java的自增运算符(++)和自减运算符(--)继承自C++,可以使变量的值加1或减1,但其写在变量前和变量后有不同的效果: 1.如果写在变量前,表示在使用这个变量之前加1或减1 2.如果写在变量后,表示这个变量使用完之后再加1或减1 示例代码如下所示: 1.int a = 10, b = 20; 2.int c1 = a++; // 先将a的值赋给c1,然后a再自加 3.int c2 = ++b; // 先将b的值自加,然后再赋给c2 4.System.out.println("a=" + a + ", b=" + b + ", c1=" + c1 + ", c2=" + c2); 5.// 输出的结果为: a=11, b=21, c1=10, c2=21 关系运算 2.1. 使用关系运算符

python数据分组运算

最后都变了- 提交于 2019-12-17 15:35:57
摘要: pandas 的 GroupBy 功能可以方便地对数据进行分组、应用函数、转换和聚合等操作。 # 原作者: lionets GroupBy 分组运算 有时也被称为 “split-apply-combine” 操作。其中的 “split” 便是借由 obj.groupby() 方法来实现的。 .groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False) 方法作用于一条轴向上,并接受一个 分组键 (by)参数来给调用者分组。分组键可以是Series 或列表,要求其长度与待分组的轴一致;也可以是映射函数、字典甚至数组的某条 列名(字符串) ,但这些参数类型都只是快捷方式,其最终仍要用于生成一组用于拆分对象的值。 lang:python >>> df = DataFrame({'key1':['a','a','b','b','a'], 'key2':['one','two','one','two','one'], 'data1':np.random.randn(5), 'data2':np.random.randn(5)}) >>> df data1 data2 key1 key2 0 0.922269 0.110285 a one 1 -0