第四讲 排序 4.1 巨经典的排序算法 1. 冒泡排序(很简单) 平均时间复杂度 O(n^2) ,空间复杂度 O(1),稳定 基本思想 两个数比较大小,较大的数下沉,较小的数冒起来。 演示(图片来自菜鸟教程) 代码 /** * 冒泡排序 * @param array 待排序的数组 */ public ...
分类:
编程语言 时间:
2020-12-04 11:29:30
阅读次数:
5
GAN的数学推导前面我们讲了一下GAN的基本思想,最近看了一下GAN的论文,又恰好看到了李宏毅老师的课程,感觉里面的数学推导很有意思,所以准备写下来以备之后查阅。首先需要一点预备知识,KLdivergence,这是统计中的一个概念,是衡量两种概率分布的相似程度,其越小,表示两种概率分布越接近。对于离散的概率分布,定义如下对于连续的概率分布,定义如下根据我们之前讲的内容,我们要做的事情就如下图所示我
分类:
其他好文 时间:
2020-11-27 11:27:18
阅读次数:
8
一. 冒泡排序(BubbleSort) 基本思想:两个数比较大小,较大的数下沉,较小的数冒起来。 过程: 比较相邻的两个数据,如果第二个数小,就交换位置。 从后向前两两比较,一直到比较最前两个数据。最终最小数被交换到起始的位置,这样第一个最小数的位置就排好了。 继续重复上述过程,依次将第2.3... ...
分类:
编程语言 时间:
2020-11-26 14:24:16
阅读次数:
8
go并不是一个纯面向对象的编程语言。在go中的面向对象,结构体替换了类。 go并没有提供类class,但是它提供了结构体struct,方法method可以在结构体上添加。提供了捆绑数据和方法的行为,这些数据和方法与类类似。 面向对象的基本思想主要体现在封装,继承以及多态等的设计与运用上。下面来看看封 ...
分类:
编程语言 时间:
2020-11-13 12:45:10
阅读次数:
8
二分搜索简介 在计算机科学中,二分搜索(binary search)也称折半搜索(half-interval search)、对数搜索(logarithmic search),是在有序数组中查找某一特定元素的搜索算法。 其基本思想是通过逐次比较数组特定范围的中间元素与目标元素的大小,每次缩小一半的搜 ...
分类:
其他好文 时间:
2020-11-12 13:35:55
阅读次数:
9
离散化的认识 离散化,一种常见的数据处理技巧,可以有效的降低时间复杂度,可以做到将一些低效的算法进行改进,甚至拟造出一些不可能的算法,使其速度大为提高。 离散化的基本思想就是将一些巨大的范围内,挑选出要用的值,再进行处理。 离散化的处理 注:对数据进行离散化处理的前提是这些数据只于他们的相对大小有关 ...
分类:
其他好文 时间:
2020-11-06 01:15:21
阅读次数:
15
快速排序 快速排序的基本思想 利用分治的思想 快速排序的基本思路 将数组分成两个部分,一个部分大于某个数,一个部分小于某个数,然后递归,直到所有的数字都排序完成 边界判断l >= r时return 设定一个x值,这个x值可以是左边界l,右边界r,或者是(l + r)/2,甚至是随机的值(不能超过边界 ...
分类:
编程语言 时间:
2020-11-04 19:17:58
阅读次数:
28
引入自治域系统的基本思想就是通过不同的编号区分不同的自治域系统 自治域系统内部的路由协议-IGP eg: OSPF ISIS RIP EIGRP(cisco专有) 自治域系统之间的路由协议-BGP eg: BGP EGP ...
分类:
其他好文 时间:
2020-09-23 23:04:15
阅读次数:
64
递归算法 递归的基本思想就是--自己调用自己, 利用递归可以用简单的程序解决复杂的问题. 递归结构包括两个部分: 定义递归头: 解决什么时候不调用自身的方法, 如果没有头, 则陷入死循环, 也就是递归借宿的条件 递归体:什么时候需要调用自身的方法 1 import os 2 allfiles = [ ...
分类:
编程语言 时间:
2020-09-21 12:03:38
阅读次数:
60
MapReduce能够计算非常复杂的聚合逻辑,非常灵活,但是,MapReduce非常慢,不应该用于实时的数据分析中。MapReduce能够在多台Server上并行执行,每台Server只负责完成一部分wordload,最后将wordload发送到MasterServer上合并,计算出最终的结果集,返回客户端。MapReduce的基本思想,如下图所示:在这个例子中,我们以一个求和为例。首先执行Map
分类:
数据库 时间:
2020-09-18 00:43:16
阅读次数:
38