
【算法学习】
文章平均质量分 64
雪飞静
左手边在冒险,右手边在蜕变。
展开
-
冒泡排序算法
冒泡排序算法import java.util.*;public class BubbleSort { public static void bubbleSort(int[] arr) { if (arr == null || arr.length < 2) { return; } for (int i = arr原创 2015-12-14 16:04:51 · 400 阅读 · 0 评论 -
排序复杂度分析
转载 2016-07-10 16:57:06 · 469 阅读 · 0 评论 -
hash实例讲解
from http://blog.jobbole.com/49229/说明:本文分为三部分内容,第一部分为一道百度面试题Top K算法的详解;第二部分为关于Hash表算法的详细阐述;第三部分为打造一个最快的Hash表算法。第一部分:Top K 算法详解问题描述百度面试题:搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-2转载 2016-07-11 16:33:27 · 16803 阅读 · 0 评论 -
快速排序
转:http://blog.youkuaiyun.com/morewindows/article/details/6684558快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。总的转载 2016-05-09 19:20:49 · 389 阅读 · 0 评论 -
Relife算法
【转载】数据挖掘之—基于ReliefF和K-means算法的医学应用实例(转自: http://www.cnblogs.com/asxinyu/archive/2013/08/29/3289682.html) 数据挖掘方法的提出,让人们有能力最终认识数据的真正价值,即蕴藏在数据中的信息和知识。数据挖掘 (DataMiriing),指的是从大型数据库或数据仓库中提取人们感兴趣的转载 2016-07-25 22:49:06 · 4339 阅读 · 1 评论 -
SVM小结
from :http://noalgo.info/363.html支持向量机(SVM,Support Vector Machine)是一种基于统计学习理论的模式识别方法,在解决小样本、高维度及非线性的分类问题中应用非常广泛。LIBSVM是一个由台湾大学林智仁(Lin Chih-Jen)教授等开发的SVM模式识别与回归的软件包,使用简单,功能强大,本文主要介绍其在Matlab中的使用转载 2016-07-25 23:11:14 · 1694 阅读 · 0 评论 -
编程5大算法总结--概念加实例
分治法,动态规划法,贪心算法这三者之间有类似之处,比如都需要将问题划分为一个个子问题,然后通过解决这些子问题来解决最终问题。但其实这三者之间的区别还是蛮大的。贪心是则可看成是链式结构回溯和分支界限为穷举式的搜索,其思想的差异是深度优先和广度优先一:分治算法一、基本概念在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两原创 2016-07-07 10:35:26 · 9646 阅读 · 0 评论 -
二分查找
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以原创 2015-12-14 20:49:09 · 505 阅读 · 0 评论 -
二叉树java笔试操作总结
import java.util.ArrayList;import java.util.Iterator;import java.util.LinkedList;import java.util.List;import java.util.Queue;import java.util.Stack;/**z转自:点击打开链接 http://blog.youkuaiyun.com/luckyxi转载 2016-07-09 13:18:39 · 881 阅读 · 0 评论 -
动态规划算法总结
解题方法:动态规划所处理的问题是一个多阶段决策问题,一般由初始状态开始,通过对中间阶段决策的选择,达到结束状态。这些决策形成了一个决策序列,同时确定了完成整个过程的一条活动路线(通常是求最优的活动路线)。如图所示。动态规划的设计都有着一定的模式,一般要经历以下几个步骤。┌───┐┌───┐┌───┐初始状态→│决策1│→│决策2│→…→│决策n│→结束状态转载 2016-07-30 19:49:06 · 4423 阅读 · 1 评论 -
Java原生排序方法总结--HashMap排序
import:java.util.Arrays; java.util.Comparator一、Arrays.sort()对基本类型排序(应该不是最优) 其中主要分为Primitive(8种基本类型)和Object两大类。 基本类型:采用调优的快速排序; 对象类型:采用改进的归并排序。二.Comparat原创 2016-07-12 11:05:38 · 7061 阅读 · 0 评论 -
C# WinForm开发中使用XML配置程序
本文介绍在使用C#开发WinForm程序时,如何使用自定义的XML配置文件。虽然也可以使用app.config,但命名方面很别扭。我们在使用C#开发软件程序时,经常需要使用配置文件。虽然说Visual Studio里面也自带了app.config这个种配置文件,但用过的朋友都知道,在编译之后,这个app.config的名称会变成app.程序文件名.config,这多别扭啊!我们还是来自己定原创 2016-01-14 15:59:35 · 3305 阅读 · 0 评论 -
迷宫问题解法汇总
from:http://www.cnblogs.com/rollenholt/archive/2011/08/23/2151202.htmljava写的回溯法求迷宫问题问题描述:[实验目的]综合运用数组、递归等数据结构知识,掌握、提高分析、设计、实现及测试程序的综合能力。[实验内容及要求]以一个M×N的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程转载 2016-08-28 22:19:13 · 12563 阅读 · 0 评论 -
排序算法总结---java面试
1.冒泡排序package sort;public class BubbleSort { public static void bubbleSort(int a[]) { int temp = 0; for (int i = 0; i < a.length; i++) { for (int j = 0; j < a.length - 1 - i; j++) { if原创 2016-07-07 09:44:53 · 815 阅读 · 0 评论 -
1的个数问题、数组最大最小值java---编程之美
剑指offer原题:给定一个十进制整数N,求出从1到N的所有整数中出现"1"的个数。例如:N=2,1,2出现了1个"1"。N=12,1,2,3,4,5,6,7,8,9,10,11,12。出现了5个"1"。最直接的方法就是从1开始遍历到N,将其中每一个数中含有"1"的个数加起来,就得到了问题的解。public static long CountOne3原创 2016-08-12 19:43:25 · 706 阅读 · 0 评论 -
水王问题java解法
public class KingOfWater { public static void main(String[] args) { int a[]={3,3,3,5,3,3,2,3,2,3,3,3,0,9,0,8,4}; int b[]={3,5,3,2,4,3,6,8,3,6,3,2,3,6,2,8,3,6,2,3,4,6,2,2,6}; int can原创 2016-08-12 17:06:51 · 731 阅读 · 0 评论 -
AVL树、红黑树
from:http://blog.youkuaiyun.com/liyong199012/article/details/29219261在计算机科学中,AVL树是最先发明的自平衡二叉查找树。AVL树得名于它的发明者 G.M. Adelson-Velsky 和 E.M. Landis,他们在 1962 年的论文 "An algorithm for the organization of informa转载 2016-07-07 19:31:46 · 1568 阅读 · 0 评论 -
排序算法大总结,代码来说话
排序一直以来都是让我很头疼的事,以前上《数据结构》打酱油去了,整个学期下来才勉强能写出个冒泡排序。由于下半年要准备工作了,也知道排序算法的重要性(据说是面试必问的知识点),所以又花了点时间重新研究了一下。 排序大的分类可以分为两种:内排序和外排序。在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序。下面讲的排序都是属于内排序。 内排序有可以转载 2015-12-14 16:20:45 · 441 阅读 · 0 评论 -
广义表
1.定义 广义表(Lists,又称列表)是一种非线性的数据结构,是线性表的一种推广。即广义表中放松对表元素的原子限制,容许它们具有其自身结构。它被广泛的应用于人工智能等领域的表处理语言LISP语言中。在LISP语言中,广义表是一种最基本的数据结构,就连LISP 语言的程序也表示为一系列的广义表。(1)广义表常用表示 ① E=() E原创 2016-02-29 20:11:07 · 574 阅读 · 0 评论 -
折半查找最大查找长度
折半查找最大查找长度:㏒n +1 , 二元查找树退化成单链表以后查找效率为o(n),最佳查找效率为 ㏒n +1原创 2016-02-29 20:04:51 · 2356 阅读 · 0 评论 -
哈希表那些事
1官方定义:散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,原创 2015-12-14 11:24:02 · 549 阅读 · 0 评论 -
排序算法理论及动态实践图
排序的定义:输入:n个数:a1,a2,a3,...,an输出:n个数的排列:a1',a2',a3',...,an',使得a1'In-place sort(不占用额外内存或占用常数的内存):插入排序、选择排序、冒泡排序、堆排序、快速排序。Out-place sort:归并排序、计数排序、基数排序、桶排序。当需要对大量数据进行排序时,In-place sort就显示转载 2015-12-14 10:38:56 · 1080 阅读 · 0 评论 -
jQuery源码分析11--插件接口的设计,可拓展性
插件接口的设计 如果jQuery没有插件接口的设计,那么他就像个光杆司令没有兵,就是没有手下,只有自己一个封闭的城堡。因此jQuery城堡需要设计一个大门 - 插件接口,从而打开大门开始招兵买马。当然jQuery除了获得“开发者社区”的大力支持外,也有很多大公司纷纷对它投出了橄榄枝,这也是它成功的关键。 基于插件接口设计的好处也是颇多的,其中一个原创 2015-12-29 16:15:12 · 380 阅读 · 0 评论 -
字符串有结束符\0
字符串有结束符\0,长度比相应的数组长!!!!原创 2016-01-11 22:01:09 · 618 阅读 · 0 评论 -
字符串逆转的方法
字符串逆转,就是将一个字符串头尾倒置,变成一个新的字符串如:abcdefg -> gfedcbabbcaa -> aacbb逆转字符串可以在线性时间内完成,所需时间与字符串长度成正比。逆转的方法很简单,只需要遍历一半字符串,并将对应位置上的字符对换即可。字符串中的字符对应一个正整数,因此下面的三种方法都是利用了变换两个整型变量的思想。1、利用最简单的交换原创 2016-02-26 09:34:00 · 1522 阅读 · 0 评论 -
键盘钩子 实例!!!!
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if (keyData == Keys.F1) { cap.Price = cap.Price + 1 * 100原创 2016-03-12 16:19:37 · 551 阅读 · 0 评论 -
leetcode刷题经验
语言不是最重要的,思想最重要从做上面的题,我发现我更擅长一些数学技巧不高的程序题,习惯靠直觉立马书写代码,而非严格推理之后,再书写代码对于链表的题比较擅长,链表可以在纸上画画,关键要考虑的问题,就是链表指针在运算中会改变,如何保存需要保存的链表指针值是难点,除了那题拷贝具有random指针的链表题,其他链表题我都比较快速的AC掉对于树的题,常见的方法有:BFS和递归(可以看作是DFS),整体来说,原创 2016-02-28 15:31:11 · 4644 阅读 · 0 评论 -
数据结构心得1
1.图的深度优先遍历类似于树的前序遍历。深度优先遍历是连通图的一种遍历策略。其基本思想如下:设x是当前被访问顶点,在对x做过访问标记后,选择一条从x出发的未检测过的边(x,y)。若发现顶点y已访问过,则重新选择另一条从x出发的未检测过的边,否则沿边(x,y)到达未曾访问过的y,对y访问并将其标记为已访问过;然后从y开始搜索,直到搜索完从y出发的所有路径,即访问完所有从y出发原创 2016-02-29 15:57:23 · 458 阅读 · 0 评论 -
图之邻接表
邻接表的示例及逆邻接表原创 2016-02-29 16:00:09 · 949 阅读 · 0 评论 -
深度优先算法思想
深度优先算法思想深度优先搜索遍历类似于树的先序遍历。假定给定图G的初态是所有顶点均未被访问过,在G中任选一个顶点i作为遍历的初始点,则深度优先搜索递归调用包含以下操作:(1)访问搜索到的未被访问的邻接点;(2)将此顶点的visited数组元素值置1;(3)搜索该顶点的未被访问的邻接点,若该邻接点存在,则从此邻接点开始进行同样的访问和搜索。深度优先搜索DFS可原创 2016-02-29 16:03:14 · 2752 阅读 · 0 评论 -
广度优先搜索
广度优先搜索,图的遍历 队 列(1) 定义 队列也是一种运算受限的线性表。在这种线性表上,插入限定在表的某一端进行,删除限定在表的另一端进行。允许插入的一端称为队尾,允许删除的一端称为队头。 特点:队列中数据元素的入队和出队过程是按照“先进先出” 的原则进行的。因此,队列又称为“先进先出”的线性表,简称F原创 2016-02-29 16:15:03 · 776 阅读 · 0 评论 -
约瑟夫环算法java
package d;import java.util.LinkedList;import java.util.List;public class test { public static void main(String[] args) { int num = 4; List all = new LinkedList();原创 2016-04-06 17:54:32 · 4318 阅读 · 1 评论 -
关键路径与最短路径解析
1.最短路径:如果从某顶点出发,这个顶点称为源点,经图的边到达另一顶点,这个顶点称为终点,所经过的路径不止一条,找出一条路径使的沿此路径上各边的权值之和为最小。(从源点到终点走得最短的路线权值之和)(默认为1)2.关键路径:采用边表示活动(Activity On Edge)网络,简称AOE网络。每个顶点代表一个事件,事件说明某些活动或某一项活动的完成,边表示活动,权表示活动持续的时间(原创 2016-02-29 16:25:12 · 31098 阅读 · 0 评论 -
最短路径算法复杂度总结
Dijkstra:O(n2)适用于权值为非负的图的单源最短路径,用斐波那契堆的复杂度O(E+VlgV),BellmanFord:适用于权值有负值的图的单源最短路径,并且能够检测负圈,复杂度O(VE)SPFA:适用于权值有负值,且没有负圈的图的单源最短路径,论文中的复杂度O(kE),k为每个节点进入Queue的次数,且k一般但此处的复杂度证明是有问题的,其实SPFA的最坏情况应该是O(VE)原创 2016-02-29 16:36:36 · 22295 阅读 · 0 评论 -
最短路径解决算法
一.问题引入 问题:从某顶点出发,沿图的边到达另一顶点(O(n2)Xn个,总体为3次方)所经过的路径中,各边上权值之和最小的一条路径——最短路径。解决最短路的问题有以下算法,Dijkstra算法,Bellman-Ford算法,Floyd算法和SPFA算法,另外还有著名的启发式搜索算法A*,不过A*准备单独出一篇,其中Floyd算法可以求解任意两点间的最短路径的长度原创 2016-02-29 16:39:08 · 1449 阅读 · 0 评论 -
树结点,与度=边
在一棵三元树中度为3的结点数为2个,度为2的结点数为1个,度为1的结点数为2个,则度为0的结点数为()个树结构中,结点总数(包括根和叶子) = 边数 + 1。 这里边数 = 3*2+2+2= 10 结点总数为11 减去度不为0的结点:11-2-1-2=6 即为叶结点原创 2016-02-29 18:58:56 · 3590 阅读 · 0 评论 -
二分查找的两种实现方式--循环和递归
package com.ming.test;import java.util.Arrays;public class binarySearch { public static int binarySearch(int[] srcArray, int des) { // 第一个位置. int low = 0; // 最高位置.数组长度-1,因为下标是从0开始的. int h原创 2016-08-14 22:11:16 · 1554 阅读 · 0 评论