
算法
XYZ_916
study all the time
展开
-
排序算法
排序可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,外部排序是因为排序的数据量很大,一次不能容纳全部的排序记录,在排序过程中需要访问外部存储空间。内存中排序算法介绍。冒泡排序思想:通过与相邻元素的比较和交换把最小的数交换到最前面,从后向前遍历(或者把最大的数交换到最后面,从前到后遍历)。平均和最差的时间复杂度O(n^2)。空间复杂度O(1)。稳定的算法。如果算法优化,最...转载 2018-09-10 22:16:50 · 256 阅读 · 0 评论 -
最大似然估计
最大似然估计(maximum likelihood estimation,缩写为MLE),也称最大概似估计,是用来估计一个概率模型的参数的一种方法。给定一个概率分布,已知其概率密度函数(连续分布)或概率质量函数(离散分布)为,以及一个分布参数,我们可以从这个分布中抽出一个具有个值的采样,利用计算出其似然函数:若是离散分布,即是在参数为时观测到这一采样的概率。若其是连续分布,则为联合...转载 2018-08-04 20:56:43 · 361 阅读 · 0 评论 -
RANSAC算法
随机抽样一致(RANdom SAmple Consensus,RANSAC)算法可以从一组包含“局外点”的观测数据集中,通过迭代方式估计数学模型的参数。RANSAC算法是一种不确定的算法--它有一定的概率得出一个合理的结果,为了提高准确率要提高迭代次数。RANSAC基本假设:(1)数据由“局内点”组成,即数据的分布可以用一些模型参数解释;(2)“局外点”是不能适应该模型的数据;(3)给定一组(较小...原创 2018-03-06 08:48:05 · 717 阅读 · 0 评论 -
数据流中的中位数
Leetcode题目:https://leetcode.com/problems/find-median-from-data-stream/description/Median is the middle value in an ordered integer list. If the size of the list is even, there is no middle value. So t...原创 2018-03-04 12:19:50 · 132 阅读 · 0 评论 -
K-means
K-means是聚类算法中的一种,将样本聚类为k个簇(cluster)。具体的算法步骤如下: 1、 随机选取k个聚类质心点(cluster centroids)为。2、 重复下面过程直到收敛 { 对于每一个样例i,计算其应该属于的类 对于每一个类j,重新计算该类的质心 ...原创 2018-02-11 11:22:11 · 348 阅读 · 0 评论 -
希尔排序
希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。希尔排序是基于插入排序的以下两点性质而提出改进方法的:(1)插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率(2)但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位希尔排序通过将比较的全部元素分为几个区域来提升插入排序的性能。这样可以让一个元素可以一次性地朝最终位置前进一...原创 2018-02-11 10:25:47 · 134 阅读 · 0 评论 -
外排序
外排序(External sorting)是指能够处理极大量数据的排序算法。通常来说,外排序处理的数据不能一次装入内存,只能放在读写较慢的外存储器(通常是硬盘)上。外排序通常采用的是一种“排序-归并”的策略。在排序阶段,先读入能放在内存中的数据量,将其排序输出到一个临时文件,依此进行,将待排序数据组织为多个有序的临时文件。尔后在归并阶段将这些临时文件组合为一个大的有序文件,也即排序结果。外归并排序...原创 2018-02-10 10:46:32 · 254 阅读 · 0 评论 -
基数排序
基数排序(Radix sort)是一种非比较型排序的算法。其原理是将整数按位切割成不同的数字,然后逐位进行比较。其具体实现如下:(1)将所有待排序的整数统一用等长数字表示,即以最长的整数为基准,较短的数字前面补零。(2)从最低位开始,依次进行一次排序(桶排序)。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。每次排序都是在上次排序的基础上进行排序的,也就是说此次排序的位数上他们相...原创 2018-02-09 17:36:17 · 161 阅读 · 0 评论 -
计数排序
计数排序(Counting sort)是一种稳定的线性时间排序算法(时间复杂度为O(n)),适用于小范围集合的排序。计数排序使用一个额外的数组,其中第i个元素是待排序数组中值等于的元素的个数。然后根据数组来将中的元素排到正确的位置。计数排序不是比较排序,排序的速度快于任何比较排序算法。但是由于需要借助数组C来计数,因此空间复杂度要大一些。该算法不适用于范围较大的数列的排序。例子:假原创 2018-02-07 10:44:39 · 146 阅读 · 0 评论 -
堆排序
堆排序(heap sort)貌似很受面试者的青睐,特此简单总结一下。堆排序的时间复杂度为O(nlogn),空间复杂度为O(1).堆分为大根堆和小根堆。堆是一个完全二叉树结构,并满足堆性质,即子节点值总是小于(或大于)父结点。堆排序可以分成两个步骤:初始建堆和进行堆排序。堆的关键性质:将堆的内容放入一维数组,可以通过下标计算每个结点的父结点和孩子节点。编号从0开始,从左到右从上到下层序遍历。索引为k...原创 2018-02-01 14:05:33 · 156 阅读 · 0 评论 -
求无符号整数二进制表示中1的个数
简单粗暴的方法:和1取与,计数然后移位。int OnesNumber(unsigned int n){ int count = 0; while(n!=0) { if(n&1==1)//末尾是否为1 count++; n=n>>1;//移位 } return count;}快速法:思想:n相当于在n-1翻译 2018-02-01 12:43:20 · 1244 阅读 · 0 评论