算法与数据结构(十七) 基数排序(Swift 3.0版)
前面几篇博客我们已经陆陆续续的为大家介绍了7种排序方式,今天博客的主题依然与排序算法相关。今天这篇博客就来聊聊基数排序,基数排序算法是不稳定的排序算法,在排序数字较小的情况下,基数排序算法的效率还是比较高的。今天就来聊一下基数排序算法的原理以及代码的具体实现。一、基数排序算法示意图下方的基数排序算法...
算法与数据结构(四) 图的物理存储结构与深搜、广搜(Swift版)
开门见山,本篇博客就介绍图相关的东西。图其实就是树结构的升级版。上篇博客我们聊了树的一种,在后边的博客中我们还会介绍其他类型的树,比如红黑树,B树等等,以及这些树结构的应用。本篇博客我们就讲图的存储结构以及图的搜索,这两者算是图结构的基础。下篇博客会在此基础上聊一下最小生成树的Prim算法以及克鲁斯...
为什么我要放弃javaScript数据结构与算法(第一章)—— JavaScript简介
数据结构与算法一直是我算比较薄弱的地方,希望通过阅读《javaScript数据结构与算法》可以有所改变,我相信接下来的记录不单单对于我自己有帮助,也可以帮助到一些这方面的小白,接下来让我们一起学习。第一章 JavaScript简介众所周知,JavaScript是一门非常强大的编程语言,不仅可以用于前...
算法与数据结构(七) AOV网的拓扑排序
今天博客的内容依然与图有关,今天博客的主题是关于拓扑排序的。拓扑排序是基于AOV网的,关于AOV网的概念,我想引用下方这句话来介绍:AOV网:在现代化管理中,人们常用有向图来描述和分析一项工程的计划和实施过程,一个工程常被分为多个小的子工程,这些子工程被称为活动(Activity),在有向图中若以顶...
Java数据结构与算法解析(十二)——散列表
散列表概述散列表就是一种以 键-值(key-indexed) 存储数据的结构,我们只要输入待查找的值即key,即可查找到其对应的值。散列表的思路很简单,如果所有的键都是整数,那么就可以使用一个简单的无序数组来实现:将键作为索引,值即为其对应的值,这样就可以快速访问任意键的值。这是对于简单的键的情况,...
python算法与数据结构-希尔排序算法(35)
一、希尔排序的介绍希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的记录越来越多,当增量减至1时,整个文件恰被分成...
Java数据结构与算法(21) - ch09红黑树(RB树)
红-黑规则1. 每一个节点不是红色的就是黑色的2. 根总是黑色的3. 如果节点是红色的,则它的子节点必须是黑色的;如果节点是黑色的,其子节点不是必须为红色。4. 从根到叶节点或空子节点的每条路径,必须包含相同数目的黑色节点修正违规的情况1. 改变节点的颜色2. 执行旋转操作
数据结构与算法 —— 链表linked list(01)
链表(维基百科)链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号...
【Java数据结构学习笔记之三】Java数据结构与算法之队列(Queue)实现
本篇是数据结构与算法的第三篇,本篇我们将来了解一下知识点: 队列的抽象数据类型 顺序队列的设计与实现 链式队列的设计与实现 队列应用的简单举例 优先队列的设置与实现双链表实现 队列的抽象数据类型 队列同样是一种特殊的线性表,其插入和删除的操作分别在表的两端...
【Java数据结构学习笔记之二】Java数据结构与算法之队列(Queue)实现
本篇是数据结构与算法的第三篇,本篇我们将来了解一下知识点: 队列的抽象数据类型 顺序队列的设计与实现 链式队列的设计与实现 队列应用的简单举例 优先队列的设置与实现双链表实现 队列的抽象数据类型 队列同样是一种特殊的线性表,其插入和删除的操作分别...
数据结构与算法分析(8)表、栈和队列(三)
介绍队列的相关知识: (3)队列ADT: 像栈一样,队列也是表。然而,使用队列时插入在一端进行而删除在另一端进行。 3.1队列模型 队列的基本操作是Enqueue(入队),它是在表的末端插入一个元素;还有Dequeue(出队),它是删除(或同时)返...
数据结构与算法分析(第3版)练习题-第1章-引论
入行Java不久,仅个人练习Java语言所记录,不足之处,请多指点。 1.13 设计一个泛型类Collection,它存储Object对象的集合(在数组中),以及该集合的当前大小。提供public 方法isEmpty,makeEmpty,insert,remove和isPresent。方法isPr...
数据结构与算法MOOC / 第三章 栈与队列 练习题 4:双端队列
4:双端队列 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65535kB 描述 定义一个双端队列,进队操作与普通队列一样,从队尾进入。出队操作既可以从队头...
数据结构与算法MOOC / 第三章 栈与队列 练习题 2:栈的基本操作
2:栈的基本操作 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 1000kB 描述 栈是一种重要的数据结构,它具有push k和pop操作。push k是将...
数据结构与算法:数组+链表
【数组】 实现一个支持动态扩容的数组 实现一个大小固定的有序数组,支持动态增删改操作 实现两个有序数组合并为一个有序数组 学习哈希表思想,并完成leetcode上的两数之和(1)及Happy Number(202)!(要求全部用哈希思想实现!)(选做)(注意:在第四天会进行继续学习) 练习: ...
<二>java数据结构与算法 冒泡排序
冒泡排序的核心思想: 比较2个元素,如果前一个比后一个大,则进行交换,经过对每个元素的比较,最后将最大的元素设置成最后一个元素。重复操作,最后形成从小到大排序。 <span style="font-size:18px;">public class BubbleSort {public...
数据结构与算法分析(第3版)练习题-第3章-表、栈和队列
仅个人练习Java语言所记录,不足之处,请多指点。 3.9 提供对MyArrayList类的allAll方法的实现。方法addAll将由items给定的特定集合的所有项添加到MyArrayList的末端。再提供上述实现的运行时间。你使用的方法声明与Java Collections API的略有不同,...
数据结构与算法分析(JAVA版)Chapter2练习题
/** * 文件名:Test8.java * 时间:2014年11月1日上午9:07:12 * 作者:修维康 */package chapter2;import java.util.Arrays;import java.util.Random;/** * 类名:Test8 说明:生成前N个整数的一个...
数据结构与算法分析 C++描述(第3版) 习题2.8 详尽分析
数据结构与算法分析 C++描述(第3版) 习题2.8 详尽分析 Data Structures and Algorithm Analysis In C++ Third Edition By Mark Allen Weiss 转载请注明出处及作者:九天雁翎 ...
数据结构与算法分析Java版练习1.3
package ch01;/** * 练习1.3 只使用处理I/O的printDigit方法,编写一种方法以输出任意 * double型量(可以是负数)。 */public class EX03 {private static void printDigit(int i) {Syst...