
数据结构和算法
。
奔跑的乌龟
生命在于静止
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
快速排序之一路快速排序(Java实现)
一路排序不考虑等于的情况,将等于的数字划分到大于区或者等于区,还有一个特点就是一路排序从左到右遍历。废话不多说,直接上代码,好东西都在代码里。边看图边写代码边写注释,真的是美滋滋了呢!...原创 2019-05-05 01:06:26 · 250 阅读 · 0 评论 -
归并排序(java实现)
归并排序的核心思想就是把一个数组进行递归拆分成两半,然后再并。并的过程中进行排序。核心思想自行百度,其实大概过程就和上图差不多。第一步:递归拆分第二步:递归并(并的过程中排序)java实现代码如下package sort;public class MergeSort {//归并排序 public static void sort(int arr[]) { mergesort(a...原创 2019-05-04 23:16:44 · 135 阅读 · 0 评论 -
计数排序(java实现)
计数排序常用于纯数字的排序,速度很快,也很实用package sort;//计数排序 常用于数字排序 用空间换时间策略public class CountIntegerSort { /* * 2 4 6 8 8 6 * 1 0 1 0 2 0 2 * 0 1 2 3 4 5 6 */ public static void sort(int[] arr) { if(a...原创 2019-05-04 17:05:00 · 490 阅读 · 0 评论 -
常用的几种排序(冒泡,插入,选择,快速,)
一、快速排序基本概念代码实现package 快速排序;import java.util.Arrays;public class QuickSort { public static void main(String[] args) { int nums[]= {10,3,5,4,1,2,8,7,9}; //3 5 4 7 /* * 9 3 5 4 1 2 8 7 ...原创 2019-04-10 21:44:35 · 426 阅读 · 0 评论 -
三种常见的查找方法(二分查找的两种实现以及顺序查找)
二分查找概念二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。查找过程首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表...原创 2019-04-04 10:39:46 · 4602 阅读 · 0 评论 -
leetcode98. 验证二叉搜索树(java实现两种解法)
(一)解题思路:这道题有两种思路,一种采用中序遍历将得到的元素添加到list中,然后遍历list。还有一种就是用二叉搜索树迭代器。第一种:中序遍历(算法时间复杂度比较高)/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * ...原创 2019-04-17 14:03:01 · 810 阅读 · 0 评论 -
基于单链表和二分搜索树实现的set集合
(1)定义Set接口/* * 集合:存储不重复元素的容器 有序集合中的元素具有顺序性,基于搜索树实现 无序集合中的元素没有顺序性,基于哈希表实现 顺序性,是指按照元素的大小进行排序,并非指插入的顺序 有序性,是指元素的进场顺序和出场顺序一致 应用场合: 客户统计 ...原创 2019-04-15 09:49:38 · 197 阅读 · 0 评论 -
Java实现的单链表
Node结点的创建private class Node {// 结点 /* * 1.数据域 2.指针域 */ E data; Node next; public Node() { this(null, null); } public Node(E data) { this(data, null); } public Node(E da...原创 2019-03-27 22:47:29 · 148 阅读 · 0 评论 -
java实现的循环队列
ArrayQueueLooppackage 队列;/* * 循环队列。 * front指向队头元素,rear指向队尾元素的下一个位置 * 队列为空条件:front==rear; 头指针==尾指针 * 队列满条件:(rear+1)%capaticy==front; * capaticy代表队列的最大容量 * 队列长度计算公式: * 当front<rear时:size=rear...原创 2019-03-26 21:37:45 · 298 阅读 · 0 评论 -
java实现的顺序队列
定义接口package 队列;/* * */public interface Queue<E> { public int getSize(); public boolean isEmpty(); public void enqueue(E e); public E dequeue(); public E getFront(); public E getRear(...原创 2019-03-26 17:04:55 · 448 阅读 · 0 评论 -
java实现的顺序栈
顺序栈一package 栈;/* * 栈就是特殊的线性表。 */public interface Stack<E> { public int getSize(); public boolean isEmpty(); public void push(E e);//进栈 public E pop();//弹栈 public E peek();//出栈 public...原创 2019-03-25 18:45:23 · 328 阅读 · 0 评论 -
java实现的顺序表
java实现的顺序表(1)List接口public interface List<E> { public int getSize(); public boolean isEmpty(); public void add(int index,E e); public void addFirst(E e); public void addLast(E e); p...原创 2019-03-25 15:19:32 · 258 阅读 · 0 评论 -
leetcode173. 二叉搜索树迭代器(java实现)
(一)题目描述实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。调用 next() 将返回二叉搜索树中的下一个最小的数。示例:BSTIterator iterator = new BSTIterator(root);iterator.next(); // 返回 3iterator.next(); // 返回 7iterator.hasNext();...原创 2019-04-16 21:10:52 · 495 阅读 · 0 评论 -
基于最大堆实现的优先队列。
一、概念普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出 (first in, largest out)的行为特征。通常采用堆数据结构来实现。二、代码实现import 队列.Queue;public class PriorityQueue<E extends ...原创 2019-04-21 14:14:45 · 424 阅读 · 0 评论 -
leetcode19. 删除链表的倒数第N个节点(最详细解法,执行时间1ms)
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?这道题的是要倒数删除第n个结点并返回删除后的链表,有就是返回该链表...原创 2019-08-05 22:18:07 · 217 阅读 · 0 评论 -
递归思想
概念程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要...原创 2019-04-05 20:57:12 · 167 阅读 · 0 评论 -
用递归思想解决汉诺塔问题(java实现)
汉诺塔汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。由来以及传说法国数学家爱德华·卢卡斯曾编写过一个印度的古老传说:在世界中心贝拿勒斯(在...原创 2019-04-06 21:16:20 · 625 阅读 · 0 评论 -
用递归思想和回溯算法解决八皇后问题(java实现)
八皇后问题八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。计算机发明后,有多种计算机语言...原创 2019-04-06 22:09:37 · 1203 阅读 · 0 评论 -
什么是树?
一、树的定义线性结构是一对一关系,那么一对多关系的需要用什么处理呢?这就引入了一种特殊的数据结构,——“树”强调:n>0时候根结点是唯一的,不可能存在多个根结点,这个和现实中的大树不一样,数据结构一个树只能有一个根结点。m>0时,子树的个数没有限制,但它们一定是不互相交互的。例如下图中的结构就不符合树的定义,所以它们不是树。二、什么是树的结点?结点间的关系可分...原创 2019-04-08 20:11:16 · 2025 阅读 · 1 评论 -
二叉树的定义
一、二叉树的定义一个根结点和两棵互不相交的左子树和右子树构成!!!二、二叉树的特点每个结点最多有两棵树,所以二叉树中不存在度大于2的结点。注意了!!!是最多有两棵子树,不是必须要有两棵子树。一棵树或者没有树都行。左子树和右子树是有顺序的,次数不能任意颠倒。这个左右子树就象人的双脚和双手一样,就像把两个脚交换就不合适了对吧。即使树种某一个结点只有一棵树,也要区分它是左子树还是右子树...原创 2019-04-08 20:36:57 · 412 阅读 · 0 评论 -
二叉树的性质(重点)
性质一:(1)在二叉树的第i层上最多有2^(i-1)个结点。(i>=1)(2)深度为k的二叉树最多有2^(k)-1个结点。(k>=1)!!!:注意上面一个是2^(i-1),i代表层数,一个是 2^(k)-1,k代表深度。性质二:性质三、注意 :是完全二叉树的性质。性质四、注意 :是完全二叉树的性质。性质五、(所有二叉树的性质)补:如果根结点是...原创 2019-04-08 21:25:35 · 282 阅读 · 0 评论 -
二分搜索树的一些总结以及代码实现(java实现)
概念二叉搜索树:对有一个树的任何结点,其右子树的值总是大于当前结点的值,其左子树的值总是小于当前结点的值。注意:线性表,队列,栈都可以存重复元素,树最好不要存。功能实现 1.判断当前树的长度2.判断当前树是否为空3.给树添加元素,两种实现方法,一种是迭代法,一种是递归。4.查找元素是否包含在树种5.中序遍历6.广度优先遍历(队列实现)。。。未完代码实现package...原创 2019-04-09 21:26:33 · 799 阅读 · 0 评论 -
基于单链表实现的map映射
(一)映射的概念映射就是存储(键,值)数据对的数据结构(Key,Value)。根据键(Key),寻找值(Value)有序映射中的键具有顺序性,基于搜索树实现无序映射中的键没有顺序性,基于哈希表实现映射->字典->键值对的集合f(x)=x^2+3x+2一个x只能对应一个y多个x可以对应多个y 也可以对应一个y一个x可以不可以对应多个y?不可以x2/a-y2/b=...原创 2019-04-16 20:35:15 · 316 阅读 · 0 评论 -
基于二分搜索树实现的map字典
(一) 基本介绍看我上一篇写的linklist实现的mapmap介绍(二)map接口实现import p02.动态链表.SingleLinkList;import 顺序表.List;public class BstMap<K extends Comparable<K>,V> implements Map<K, V> { private class ...原创 2019-04-16 20:53:59 · 210 阅读 · 0 评论 -
数据结构之java实现的最大堆
一 、基本概念:二叉堆二叉堆是一个完全二叉树,区别于满二叉树。当二叉堆的任意结点的值不大于其父亲结点的值,那么这个堆就是最大堆。最大堆是堆的两种形式之一。根结点(亦称为堆顶)的关键字是堆里所有结点关键字中最大者,称为大根堆,又称最大堆(大顶堆)。大根堆要求根节点的关键字既大于或等于左子树的关键字值,又大于或等于右子树的关键字值。最大堆下层元素的值不一定小于上层元素的值。如下图:...原创 2019-04-21 14:08:25 · 574 阅读 · 0 评论 -
Java实现的循环单链表以及约瑟夫环的实现
定义Node结构体用java实现Node的话最好用内部类的形式。Node具体代码块private class Node{ E data; Node next; public Node() { this(null, null); } public Node(E data) { this(data, null); } public Node(E dat...原创 2019-03-29 17:28:20 · 2048 阅读 · 0 评论