算法分析
文章平均质量分 60
ArLUO20
这个作者很懒,什么都没留下…
展开
-
求【无重复字母】字符串的所有子串
求【无重复字母】字符串的所有子串原创 2014-07-04 17:00:58 · 1496 阅读 · 0 评论 -
LCA(lowest common ancestor)问题
问题描述 LCA:Least Common Ancestors(最近公共祖先),对于一棵有根树T(不一定是二叉树哦)的任意两个节点u,v,求出LCA(T, u, v),即离根节点root最远的节点x,使得x同时是u和v的祖先。对于该问题,最容易想到的算法是分别从节点u和v回溯到根节点,获取u和v到根节点的路径P1,P2,其中P1和P2可以看成两条单链表,转载 2014-09-05 22:13:39 · 774 阅读 · 0 评论 -
有向图强连通分量的Tarjan算法
装载于:https://www.byvoid.com/blog/scc-tarjan/ 作者:byvoid转载 2014-09-05 20:09:16 · 578 阅读 · 0 评论 -
各种排序算法性能比较
1.稳定性比较合并排序、插入排序、冒泡排序、二叉树排序、二路归并排序及其他线形排序是稳定的选择排序、希尔排序、快速排序、堆排序是不稳定的2.时间复杂性比较 平均情况最好情况最坏情况归并排序O(nlogn)O(nlogn)O(nlogn)基数排序O(n)O(n)O(n)转载 2014-08-11 20:25:03 · 1159 阅读 · 0 评论 -
八大排序算法及完整c代码—堆排序c、java代码
基本思想:堆排序是一种树形选择排序,是对直接选择排序的有效改进。堆的定义如下:具有n个元素的序列(h1,h2,...,hn),当且仅当满足(hi>=h2i,hi>=2i+1)或(hi<=h2i,hi<=2i+1)(i=1,2,...,n/2)时称之为堆。在这里只讨论满足前者条件的堆。由堆的定义可以看出,堆顶元素(即第一个元素)必为最大项(大顶堆)。完全二叉树可以很直观地表示堆的结构。堆顶为根,原创 2014-08-12 17:03:00 · 859 阅读 · 0 评论 -
二分查找
package com.ali.demo;import java.util.Random;public class BinarySearch { /** 比较两次 */ public int searchOne(int a[], int k) { int l = 0; int u = a.length - 1; int mid = 0; while (l <= u)原创 2014-08-16 16:28:49 · 628 阅读 · 0 评论 -
谱聚类原理简述(含实验代码)
Spectral clustering(谱聚类) 是一种基于图论的聚类方法,它能够识别任意形状的样本空间并收敛于全局最优解。其基本的思想是将样本数据进行相似性计算得到相似度矩阵,然后将相似矩阵转换到Laplacian 矩阵 (拉普拉斯矩阵),做 Laplacian 矩阵的特征值分解,将得到的前 k 个特征向量按列排序后按行做 k − means 聚类,得到最终的聚类结果。由于谱聚类有很原创 2016-10-02 22:26:42 · 1811 阅读 · 0 评论 -
聚类之 FCM 算法原理及应用(Java可视化实现)
模糊 C 均值(Fuzzy C-means)算法简称 FCM 算法,是一种基于目标函数的模糊聚类算法,主要用于数据的聚类分析。限于篇幅和数学公式的表达,笔者誊写了一篇文档用于介绍FCM的数学推导,这篇推导主要参考on2way的“ 聚类之详解 FCM 算法原理及应用”(http://blog.csdn.net/on2way/article/details/47087201)笔者誊写的原创 2016-10-02 22:08:51 · 6049 阅读 · 2 评论 -
变位词程序的实现
给定一本英语单词词典,请找出所有的变位词集。所谓的变位词是指,组成各个单词的字母完全相同,只是字母排列的顺序不同。原创 2014-07-03 22:34:59 · 985 阅读 · 0 评论 -
K-th string
题目2 : K-th string时间限制:10000ms单点时限:1000ms内存限制:256MBDescriptionConsider astring set that each of them consists of {0, 1} only. All strings in the sethave the same number of 0s and 1s. Writ原创 2014-04-12 22:47:09 · 1053 阅读 · 0 评论 -
八大排序算法及完整c代码—冒泡排序
排序算法之冒泡排序基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。算法源代码:原创 2014-01-11 15:57:55 · 1629 阅读 · 0 评论 -
八大排序算法及完整c代码—直接插入排序
基本思想:在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。原创 2014-01-11 16:25:10 · 1642 阅读 · 0 评论 -
分治法、动态规划、贪心法比较
一般实际生活中我们遇到的算法分为四类:一>判定性问题二>最优化问题三>构造性问题四>计算性问题 而今天所要总结的算法就是着重解决最优化问题《算法之道》对三种算法进行了归纳总结,如下表所示:标准分治动态规划贪心算法适用类型通用问题优化问题优化问题子问题结转载 2014-01-12 17:06:32 · 1535 阅读 · 0 评论 -
八大排序算法及完整c代码—快速排序
基本思想:选择一个基准元素,通常选择第一个元素或者最后一个元素,通过一趟扫描,将待排序列分成两部分,一部分比基准元素小,一部分大于等于基准元素,此时基准元素在其排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分。原创 2014-01-15 16:51:41 · 1607 阅读 · 0 评论 -
局部线性嵌入降维算法(含实验代码)
局部线性嵌入算法(Locally linear embedding, LLE)是一个非线性降维方法,由 Sam T.Roweis 和Lawrence K.Saul 于 2000 年提出并发表在《Science》杂志上。它能够使降维后的数据保持原有拓扑结构不变。现在已经广泛应用于图像数据的分类与聚类、文字识别、多维数据的可视化、以及生物信息学等领域中。LLE 是一种局部算法。它的主要思想是利原创 2016-10-21 15:56:44 · 5300 阅读 · 2 评论