一、直接插入排序 往有序的数组中快速插入一个新的元素。 基本思想:将数组中的所有元素依次跟前面已经排好的元素相比较,如果选择的元素比已排序的元素小,则交换,直到全部元素都比较过为止。 二、希尔排序 希尔排序又称递减增量排序算法。希尔排序是先把待排序的记录序列分割成若干子序列,分别进行直接插入排序,待 ...
分类:
编程语言 时间:
2019-03-08 19:43:18
阅读次数:
216
思想 快速排序每一趟排序,都会寻找一个基准元素,有的采用第一个元素,有的会随机生成一个,但是基本思想是不变的,一趟排序结束,会形成以基准元素为分界点的两部分,其中左边比基准元素小(假设从小到大排序),右边比基准元素大。然后再以相同的方法处理左边和右边两部分,即递归。 实现(java) import ...
分类:
编程语言 时间:
2019-03-06 22:03:07
阅读次数:
185
简介 相对于决策树、朴素贝叶斯、SVM等有监督学习,聚类算法属于无监督学习。 有监督学习通常根据数据集的标签进行分类,而无监督学习中,数据集并没有相应的标签,算法仅根据数据集进行划分。 由于具有出色的速度和良好的可扩展性,Kmeans聚类算法算得上是最著名的聚类方法。 基本思想 在没有标签的数据集中 ...
分类:
其他好文 时间:
2019-03-03 20:21:12
阅读次数:
151
二分搜索算法是分支策略的典型应用,具体是在给定的有n个元素的已排序序列a中找出一个特定元素。 基本思想:将n个元素分为两半,取a[n/2]与x进行比较, 如果x<a[n/2],继续在数组a的左半部分搜索。 如果x>a[n/2],继续在数组a的右半部分搜索。 (图片源自百度图片) 查找算法对比: 1、 ...
分类:
其他好文 时间:
2019-02-28 23:12:22
阅读次数:
393
简单选择 简单选择排序的基本思想是:第一趟从所有的n个记录中选择最小的记录放在第一位,第二趟从n 1个记录中选择最小的记录放到第二位。以此类推,经过n 1趟排序之后,整个待排序序列就成为有序序列了。 以下代码参考自 "这里" 。 c public static void SimpleSelectSo ...
分类:
其他好文 时间:
2019-02-25 18:33:10
阅读次数:
123
照刘汝佳黑书学了下$splay$, 简单总结一下. $splay$每次操作不保证复杂度, 但均摊每次是$O(logn)$的. $splay$基本思想是每个结点被访问时, 使用$AVL$的旋转操作把它移动到根.$splay$的旋转与$AVL$的区别主要是由于$splay$的旋转是自底向上的, 所以需要 ...
分类:
其他好文 时间:
2019-02-25 00:52:00
阅读次数:
184
dropout 是神经网络用来防止过拟合的一种方法,很简单,但是很实用。 基本思想是以一定概率放弃被激活的神经元,使得模型更健壮,相当于放弃一些特征,这使得模型不过分依赖于某些特征,即使这些特征是真实的,当然也可能是假的。 大致步骤如下 1. 在神经元 H1 被激活后,随机生成一组数据 U1 和一个 ...
分类:
其他好文 时间:
2019-02-24 13:43:51
阅读次数:
349
简介 SVM是支持向量机(Support Vector Machines)的简称,是一种二分类模型。 支持向量机所做的就是去寻找两类数据的分隔线,通常将这个分隔线叫做超平面。 分隔的原则是间隔最大化,最终转化为一个凸二次规划问题来求解。 基本思想 (1)线性分割 如果一个线性函数能够将样本(比如说两 ...
分类:
其他好文 时间:
2019-02-24 10:18:30
阅读次数:
326
线段树 1、线段树是一棵二叉搜索树,它储存的是一个区间的信息。 2、每个节点以结构体的方式存储,结构体包含以下几个信息: 3、线段树的基本思想: 二分 。 4、线段树一般结构如图所示: 每个节点的左孩子区间范围为[l,mid],右孩子为[mid+1,r] 线段树的基础操作主要有5个: 建树、单点查询 ...
分类:
其他好文 时间:
2019-02-22 23:41:47
阅读次数:
301
链表排序(冒泡、选择、插入、快排、归并、希尔、堆排序) 用到的链表结构如下所示: 一、直接交换结点 1、直接插入排序【时间复杂度:O(n^2),空间复杂度:O(1)】 插入排序的基本思想:将待排序表看作是左、右两部分,其中左边为有序区,右边为无序区;整个排序过程就是将右边无序区中的记录依次按关键字大 ...
分类:
编程语言 时间:
2019-02-20 13:08:36
阅读次数:
183