算法
文章平均质量分 81
繁小华
这个作者很懒,什么都没留下…
展开
-
推排序算法C/C++
在堆排序算法中,我们使用的是最大堆。下面的代码是给定一组数,构造一个最大堆。left(heap, location)和right(heap, location)分别返回数组heap中location的左右孩子的索引。max_heapify(heap, i)是确保heap数组的i的左右孩子都满足最大堆化。bulid_max_heap(heap)将heap数组构造一个最大堆。heapsort(heap原创 2015-11-04 18:27:26 · 594 阅读 · 1 评论 -
libsvm交叉验证与网格搜索(参数选择)
首先说交叉验证。交叉验证(Cross validation)是一种评估统计分析、机器学习算法对独立于训练数据的数据集的泛化能力(generalize), 能够避免过拟合问题。交叉验证一般要尽量满足:1)训练集的比例要足够多,一般大于一半2)训练集和测试集要均匀抽样交叉验证主要分成以下几类:1)Double cross-validationDouble cross转载 2016-09-09 16:44:08 · 2759 阅读 · 0 评论 -
求输入向量的任何连续子向量中的最大和
问题的输入是具有n个浮点数的向量x,输出是输入向量的任何连续子向量中的最大和。,例如,如果输入向量包含下面10个元素:31,-41,59,26,-53,58,97,-93,-23,84那么该程序的输出为x[2..6]的总和,即187。当所有的数都是正数时,问题就很容易解决,此时最大子向量就是整个输入向量。当输入向量中有负数时就有麻烦了:是否应该包含某个负数时希望周围的正数会弥补它呢?为了使原创 2016-03-15 15:27:07 · 1150 阅读 · 1 评论 -
谱聚类算法(Spectral Clustering)
谱聚类算法(Spectral Clustering)谱聚类(Spectral Clustering, SC)是一种基于图论的聚类方法——将带权无向图划分为两个或两个以上的最优子图,使子图内部尽量相似,而子图间距离尽量距离较远,以达到常见的聚类的目的。其中的最优是指最优目标函数不同,可以是割边最小分割——如图1的Smallest cut(如后文的Min cut), 也可以是分转载 2015-12-25 21:39:31 · 1117 阅读 · 0 评论 -
一维的Haar小波变换
小波变换的基本思想是用一组小波函数或者基函数表示一个函数或者信号,例如图像信号。为了理解什么是小波变换,下面用一个具体的例子来说明小波变换的过程。1. 求有限信号的均值和差值 [例] 假设有一幅分辨率只有4个像素 的一维图像,对应的像素值或者叫做图像位置的系数分别为: [9 7 3 5] 计算它的哈尔小波变换系数。计算步转载 2015-12-22 19:38:49 · 3764 阅读 · 0 评论 -
快速排序
快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。总的说来,要直接默写出快速排序还是有一定难度的,因为本人就自己的理解对快速排序作了下白话解释,希望对大家理解有帮助,达到快速转载 2016-01-18 14:40:10 · 391 阅读 · 0 评论 -
离散小波变换(Discrete Wavelet Transform)
离散小波变换(Discrete Wavelet Transform)(来自维基百科)离散小波变换(Discrete Wavelet Transform)在数值分析和时频分析中很有用。第一个离散小波变换由匈牙利数学家发明,离散小波变换顾名思义就是离散的输入以及离散的输出,但是这里并没有一个简单而明确的公式来表示输入及输出的关系,只能以阶层式架构来表示。定义首先我们转载 2015-12-13 19:11:14 · 38449 阅读 · 1 评论 -
斐波那契数列
题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。思路:直接的递归会溢出,所以要采用动态规划法的思路,将每一次结算的结果都保留在一个数组里面,在用到时就省去了计算的麻烦。C/C++代码:class Solution{public: int Fibonacci(int n) { /*if(原创 2015-11-17 20:41:43 · 533 阅读 · 0 评论 -
循环排座位问题------西方的约瑟夫环
著名历史学家Josephus(约瑟夫)经历过以下故事:在罗马人占领乔塔帕特后,40个犹太人和Josephus躲在一个山洞中。40个犹太人决定宁死也不被敌人抓到,于是决定集体自杀。大家经过讨论决定了一个自杀方式,41个人围成一个圆圈,由第1个人开始报数,每报数到3的人就必须自杀,然由再由下一个人重新开始报数,直到所有人都自杀身亡为止。然而Josephus并不想遵从这个规则,不想自杀。于是,Josep原创 2015-03-15 21:53:40 · 1125 阅读 · 0 评论 -
快速排序算法实现C/C++
对于包含n个数的输入数组来说,快速排序是一种最坏情况时间复杂度为O(n^2)的排序算法。虽然最坏情况时间复杂度很差,但是快速排序通常是实际排序应用中最好的选择,因为它的平均性能非常好:它的期望时间复杂度是O(nlgn),而且O(nlgn)中隐含的常数因子非常小,另外他还能够进行原址排序,甚至在虚拟环境中也能很好地工作。下面是快速排序的C++实现代码及运行结果:/* 对SUM个数进行快速排序原创 2015-11-04 19:51:09 · 877 阅读 · 0 评论 -
生成全排序算法
记录,主要是明白递归的过程。#include using namespace std;//int out1 = 0;template inline void swap(T *array, unsigned int i, unsigned int j){ T t = array[i]; array[i] = array[j]; array[j] = t;}原创 2015-10-25 21:11:33 · 551 阅读 · 0 评论 -
Grubbs算法检测离群值
▲概述:一组测量数据中,如果个别数据偏离平均值很远,那么这个(这些)数据称作“可疑值”。如果用统计方法—例如格拉布斯(Grubbs)法判断,能将“可疑值”从此组测量数据中剔除而不参与平均值的计算,那么该“可疑值”就称作“异常值(粗大误差)”。本文就是介绍如何用格拉布斯法判断“可疑值”是否为“异常值”。▲测量数据:例如测量10次(n=10),获得以下数据:8.2、5.4、14.0、7.3、4.7原创 2015-10-11 12:25:09 · 17322 阅读 · 0 评论 -
插入排序
#include using namespace std;void insertsort(int a[], int length){ int j = 1; for(; j < length; j++) { int key = a[j]; int i = j - 1; while(i >= 0 && a[i] > key) { a[i + 1] = a[i];原创 2015-03-09 15:58:44 · 418 阅读 · 0 评论 -
目标检测的图像特征提取之(一)HOG特征
1、HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。它通过计算和统计图像局部区域的梯度方向直方图来构成特征。Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功。需要提醒的是,HOG+SVM进行行人检测的方法是法国研究人员Dal转载 2015-01-16 11:34:47 · 824 阅读 · 0 评论 -
堆排序中构造最大堆C/C++
在堆排序算法中,我们使用的是最大堆。下面的代码是给定一组数,构造一个最大堆。left(heap, location)和right(heap, location)分别返回数组heap中location的左右孩子的索引。max_heapify(heap, i)是确保heap数组的i的左右孩子都满足最大堆化。bulid_max_heap(heap)将heap数组构造一个最大堆。/*构造一个NUM个原创 2015-04-08 13:15:45 · 1373 阅读 · 0 评论 -
离散余弦变换DCT(Discrete Cosine Transform)
DCT变换和FFT变换都属于变换压缩方法(TransformCompression),变换压缩的一个特点是将从前密度均匀的信息分布变换为密度不同的信息分布。在图像中,低频部分的信息量要大于高频部分的信息量,尽管低频部分的数据量比高频部分的数据量要小的多。例如删除掉占50%存储空间的高频部分,信息量的损失可能还不到5%。变换编码有很多种。K–L变换的压缩效率很高,但算法实现困难;FFT变换算转载 2015-11-15 10:56:02 · 10570 阅读 · 1 评论 -
Adaboost算法原理及实例解析
Adaboost 算法实例解析1 Adaboost的原理1.1 Adaboost基本介绍 AdaBoost,是英文"Adaptive Boosting"(自适应增强)的缩写,由Yoav Freund和Robert Schapire在1995年提出。Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这转载 2016-08-11 15:36:59 · 1800 阅读 · 1 评论