
数据结构
海的来信
这个作者很懒,什么都没留下…
展开
-
二叉查找树的插入与删除
定义的二叉树结构为:/* * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */建立二叉查找树时,对根节点的操作与对子节点的操作步骤稍微有点差别,大家可以通过代码看出来原创 2013-12-14 22:04:07 · 527 阅读 · 0 评论 -
PriorityQueue的compare函数介绍
优先级队列是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素。PriorityQueue是从JDK1.5开始提供的新的数据结构接口。如果不提供Comparator的话,优先队列中元素默认按自然顺序排列,也就是数字默认是小的在队列头,字符串则按字典序排列。在这里我先罗列一组程序对比一下:import java.util.*;public class TestPrio原创 2014-03-05 22:02:02 · 7109 阅读 · 1 评论 -
leetcode Sort Colors java实现
描述:给一个数组,数组由三种颜色对象组成,分别为红、白、蓝,对数组进行排序,使相同颜色的对象相邻,按照先红再白最后蓝的顺序进行排列。在这里,我们使用整数0、1、2来分别代表红白蓝三种颜色。(不要使用库函数)在这里我介绍一种方法不是很普及,但是这种方法的时间复杂度是0(n)。public class Solution { public void sortColors(int[] A)原创 2014-03-06 15:00:29 · 2023 阅读 · 0 评论 -
leetcode Length of Last Word java实现
Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the length of last word in the string.If the last word does not exist, return 0.Note: A word is defin原创 2014-03-06 14:26:49 · 2184 阅读 · 1 评论 -
选择排序、树形排序、堆排序的java代码实现
package com.sort; /** * 选择排序: * 简单选择排序,树形选择排序与堆排序 * */ public class SelecSortDemo { /** * -------------------------------------------- * 简单选择排序 * 原理:假设列表转载 2014-03-12 20:46:20 · 4325 阅读 · 0 评论 -
斐波那契数列的几种不同解法
斐波那契数列传说起源于一对非常会生的兔子。定义:这个数列有很多奇妙的性质(比如 F(n+1)/F(n) 的极限是黄金分割率),用计算机有效地求解这个问题的解是一个比较有意思的问题,本文一共提供了4种解法。解法一:递归这是最最最直观的想法,是每个人都能编写的简单程序,优点是非常明显的:简单易懂,清晰明了。但是缺点就是效率非常低,时间复杂度是指数级的。举个例转载 2014-03-12 20:41:18 · 916 阅读 · 0 评论 -
排列组合 从n个自然数中取出r个数的组合
这种题目一般有两种方法,比较直接的方法就是使用循坏,但是对于这种方法只有r小于等于4时才是可行的,这个时候复杂度是(O(n^r)),可知,这种方法的时间复杂度很高,而且这种循环机制严重依赖r,通过r来控制循环层数,因此这种方法不具有普遍性。最常用的方法就是使用递归。在循环算法设计中,每个组合中的数据都是从大到小排列是必须的,因为递归算法设计时要找出大规模问题与小规模问题之间的关系。当 n原创 2014-03-12 20:19:12 · 12023 阅读 · 0 评论 -
从n个元素中找出第K小的数 利用快排的思想来实现
从n个无序的顺序表中找出第k小的数,采用快排思想:先从n个元素中随便寻找一个数m作为分界点,m在列表中的位置为i当 i = k时,m就是我们要寻找的第k小的数;当 i > k时,我们就从1~i-1中查找;当 i 实现代码如下所示:package com.search;/* * 从n个数中选出第k小的数 */public class SearchKMin { publi原创 2014-03-19 21:14:50 · 9033 阅读 · 2 评论 -
寻找第K小的数
前言寻找第K小的数属于顺序统计学范畴,通常我们可以直接在O(NlgN)的时间内找到第K小的数,使用归并排序或者堆排序对输入数据按从小到大进行排序,然后选择第K个即可。然而,我们还有更好的算法。一、热身—最大值和最小值首先来看一个简单的问题,在一个有n个元素的集合中,需要多少次比较才能确定其最小值呢?这可以很容易退出需要n-1次这个上界。伪代码如下所示:MIN转载 2014-03-19 21:34:43 · 5310 阅读 · 0 评论