数据结构与算法
文章平均质量分 52
软货
不想软下去的男人!!!
展开
-
深度优先搜索算法(DFS,Depth First Search)的PHP实现
<?phpclass Search_Method{ //无向图的数组描述 private $dfs_save; //全局记录数组 private $arr; //控制分支- private $k = 0; public function __construct() { $this->dfs_save = array( array(0,1,1,1,0,原创 2014-10-25 03:09:10 · 1942 阅读 · 0 评论 -
Java 归并排序(MergeSort)算法实现
Java 归并排序(MergeSort)算法实现public class MergeSort { public static void merge(int [] A,int p,int q,int r){ //复制数组 int n = r-p+1; int [] R = A.clone(); int i = p;原创 2015-06-29 10:40:59 · 559 阅读 · 0 评论 -
Java快速排序(QuickSort)算法实现
Java 快速排序算法实现原创 2015-07-05 17:30:55 · 737 阅读 · 0 评论 -
【LeetCode】Majority Element II
Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. The algorithm should run in linear time and in O(1) space.查找数组主元素原创 2015-07-05 18:21:37 · 585 阅读 · 0 评论 -
Java实现二叉堆创建
问题描述二叉堆数据结构可以是一个数组对象,他可以视为一个几乎完全的二叉树,最大堆满足对于每一个非根节点,节点的值不大于其父节点的值。程序实现public class MaxHeap { public static int left(int i){ return 2*i; } public static int right(int i){ ret原创 2015-07-05 20:09:51 · 645 阅读 · 0 评论 -
Java堆排序(HeapSort)算法实现
算法实现public class MaxHeap { public static int left(int i){ return 2*i; } public static int right(int i){ return 2*i+1; } public static int heapSize(int [] arr){原创 2015-07-05 20:32:26 · 636 阅读 · 0 评论 -
Java 分治算法实现排序数索引(二分搜索)
递归查找排序整数中数字索引,二分搜索原创 2015-06-08 17:49:32 · 410 阅读 · 0 评论 -
【LeetCode】Happy Number
Happy Number问题描述Write an algorithm to determine if a number is “happy”.A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of原创 2015-07-14 12:09:45 · 641 阅读 · 0 评论 -
【LeetCode】Search for a Range
问题描述Given a sorted array of integers, find the starting and ending position of a given target value. Your algorithm’s runtime complexity must be in the order of O(log n). If the target is not found i原创 2015-07-06 11:37:27 · 474 阅读 · 0 评论 -
【LeetCode】Power of Two
问题描述Given an integer, write a function to determine if it is a power of two. 意:判断一个数是否是2的n次幂算法思想如果一个数小于或等于0,一定不是2的幂次数 如果一个大于0且数是2的n次幂,则其的二进制形式有且仅有一个1,反之成立。算法实现public class Solution { public boole原创 2015-07-06 13:38:38 · 1480 阅读 · 0 评论 -
【LeetCode】Kth Smallest Element in a BST
问题描述Given a binary search tree, write a function kthSmallest to find the kth smallest element in it. Note: You may assume k is always valid, 1 ≤ k ≤ BST’s total elements.算法思想BST中序遍历为排序序列,直接技术前k个访问的数原创 2015-07-06 17:15:12 · 594 阅读 · 0 评论 -
【LeetCode】Basic Calculator II
【LeetCode】Basic Calculator IIImplement a basic calculator to evaluate a simple expression string. The expression string contains only non-negative integers, +, -, *, / operators and empty spaces .原创 2015-07-13 18:06:42 · 685 阅读 · 0 评论 -
【LeetCode】Number of Islands
Given a 2d grid map of ‘1’s (land) and ‘0’s (water), count the number of islands. An island is surrounded by water and is formed by connecting adjacent lands horizontally or verti原创 2015-07-15 11:21:54 · 642 阅读 · 0 评论 -
【LeetCode】Contains Duplicate
Contains Duplicate问题描述Given an array of integers, find if the array contains any duplicates. Your function should return true if any value appears at least twice in the array, and it should return fals原创 2015-07-16 11:21:44 · 610 阅读 · 2 评论 -
Ubuntu PPA软件源的介绍与使用
PPA软件源,全称是Personal Package Archives介绍虽然Ubuntu官方软件仓库尽可能囊括所有的开源软件,但仍有很多软件包由于各种原因不能进入官方软件仓库。为了方便Ubuntu用户使用,launchpad.net提供了个人软件包集,即PPA,允许用户建立自己的软件仓库,通过Launchpad进行编译并发布为2进制软件包,作为apt/新立得源供其他用户下载和更新。PPA也被用来对原创 2015-06-29 16:30:06 · 10329 阅读 · 0 评论 -
【LeetCode】Summary Ranges
问题描述Given a sorted integer array without duplicates, return the summary of its ranges. For example, given [0,1,2,4,5,7], return [“0->2”,”4->5”,”7”]. 意:找出排序数组(无重复数字)中的各个连续的范围原创 2015-06-29 09:46:41 · 1100 阅读 · 0 评论 -
【LeetCode】Longest Substring Without Repeating Characters
【LeetCode】Longest Substring Without Repeating CharactersGiven a string, find the length of the longest substring without repeating characters. 查找给定字符串中最长的无重复字符的子串原创 2015-06-26 15:04:09 · 670 阅读 · 0 评论 -
广度优先搜索算法(BFS,Broad First Search)的PHP实现
2、 广度优先搜索的算法思想广度优先搜索遍历类似于树的按层次遍历。对于无向连通图,广度优先搜索是从图的某个顶点v0出发,在访问v0之后,依次搜索访问v0的各个未被访问过的邻接点w1,w2,…。然后顺序搜索访问w1的各未被访问过的邻接点,w2的各未被访问过的邻接点,…。即从v0开始,由近至远,按层次依次访问与v0有路径相通且路径长度分别为1,2,…的顶点,直至连通图中所有顶点都被访问原创 2014-10-28 01:09:16 · 1969 阅读 · 0 评论 -
爬山法(Hill Climbing)的设计与PHP实现
爬山法是指经过评价当前的问题状态后,限于条件,不是去缩小,而是去增加这一状态与目标状态的差异,经过迂回前进,最终达到解决问题的总目标。就如同爬山一样,为了到达山顶,有时不得不先上矮山顶,然后再下来-------,这样翻越一个个的小山头,直到最终达到山顶。可以说,爬山法是一种"以退为进"的方法,往往具有"退一步进两步"的作用,后退乃是为了更有效地前进。爬山法也叫逐个修改法、瞎子摸象法或k-means原创 2014-11-01 00:16:21 · 1268 阅读 · 0 评论 -
Dijkstra 最短路径算法的设计与PHP实现
一、待解决问题单源最短路径问题原创 2014-10-31 23:02:28 · 3788 阅读 · 0 评论 -
经典算法归并排序的分析及PHP实现
原理,把原始数组分成若干子数组,对每一个子数组进行排序,继续把子数组与子数组合并,合并后仍然有序,直到全部合并完,形成有序的数组举例无序数组[6 2 4 1 5 9]先看一下每个步骤下的状态,完了再看合并细节第一步 [6 2 4 1 5 9]原始状态第二步 [2 6] [1 4] [5 9]两两合并排序,排序细节后边介绍第三步 [1 2 4原创 2014-11-08 01:47:15 · 534 阅读 · 0 评论 -
计算机整数乘积计算
计算机计算整数乘积的原理: /** * Caculate the multiplication between two integer * @author open201 * */public class Two { /** * Fundamental method * f(n) = O(n^2) * @param a * @param原创 2015-06-08 19:37:07 · 1305 阅读 · 0 评论 -
模拟退火算法(SA,Simulated Annealing)及其PHP实现
模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。模拟退火算法(Simulated Annealing,SA)最早由Kirkpatrick等应用于组合优化领域,它是基于Monte-Carlo迭代求解策略的一种随机寻优算法,其出发点是基于物理原创 2014-11-05 00:17:40 · 2779 阅读 · 0 评论 -
Java序列划分问题算法实现
Java序列划分问题算法实现问题描述输入: 序列A[p…r] 输出:下标q(p<=q<=r)和原序列A[p…r]的重新排列 新排列满足: A[q] = A[r] A[p…q]中的每一个元素不大于A[q] A[q+1…r]中的每一个元素大于A[q]算法思想算法需要利用A[r]将序列分为两段,总长度依旧为r,可以从左到右扫描序列,逐渐的将不大于A[r]和大于A[r]的数分开。 算法维护两个下原创 2015-06-25 17:19:37 · 709 阅读 · 0 评论 -
图的存储结构
图的存储结构除了要存储图中各个顶点的本身信息外,同时还要存储顶点与顶点之间的所有关系(边的信息),因此,图的结构比较复杂,很难以数据元素在存储区中的物理位置来表示元素之间的关系,但也正是由于其任意的特性,故物理表示方法很多。常用的图的存储结构有邻接矩阵、邻接表、十字链表和邻接多重表。 一、 邻接矩阵表示法 对于一个具有n个结点的图,可以使用n*n的矩阵转载 2014-10-25 03:17:05 · 521 阅读 · 0 评论 -
使用Java Math.random()利用蒙特卡洛方法计算pi值
/** * Monte Carlo algorithm */import java.math.*;public class PI { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub d原创 2015-06-10 10:56:36 · 785 阅读 · 0 评论 -
Java插入排序算法实现
Java插入排序算法实现问题描述输入:一组数据<a1,a2,a3,...,an><a_1,a_2,a_3,...,a_n> 输出:排序数据<b1,b2,b3,...,bn>,满足b1<b2<b3<...<bn−1<bn<b_1,b_2,b_3,...,b_n>,满足b_1<b_2<b_3<...<b_{n-1}<b_n算法思想插入排序是最简单的排序算法之一,算法思想与我们玩纸牌思想类似,从左手为空原创 2015-06-25 15:01:53 · 506 阅读 · 0 评论 -
Java合并两个有序序列算法实现
Java合并两个有序序列算法实现问题描述输入:序列A<a0,a1,a2,...aq,aq+1,aq+2,...,ar>A<a_0,a_1,a_2,...a_q,a_{q+1},a_{q+2},...,a_{r}>,其中a0<a1<...<aq,aq+1<aq+2<...<ara_0<a_1<...<a_q,a_{q+1}<a_{q+2}<...<a{r} 输出:序列B<b0,b1,...,br>,原创 2015-06-25 16:27:48 · 1848 阅读 · 1 评论 -
【LeetCode】Add Two Numbers
【LeetCode】Add Two Numbers问题描述You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit.原创 2015-06-25 21:13:51 · 431 阅读 · 0 评论 -
Java Hanoi塔问题简单分治算法实现
Java Hanoi塔问题简单分治算法实现问题描述输入:圆盘数n, 3根系杆——起始杆A、过渡杆B、目标杆C 输出:从起始杆到目标杆过程的最少步骤算法思想分治算法思想 如果A上只有一个盘,直接移动到C 如果A上有n个盘,将n-1个盘移动到B,再将A上的一个盘移动到C,随后再利用A将B上的n-1个盘移动到C(与原问题一直)算法实现public class Hanoi { public s原创 2015-06-26 12:47:26 · 3159 阅读 · 0 评论 -
【LeetCode】Contains Duplicate II
Contains Duplicate II问题描述Given an array of integers and an integer k, find out whether there there are two distinct indices i and j in the array such that nums[i] = nums[j] and the difference between i原创 2015-07-16 11:03:27 · 1057 阅读 · 0 评论