![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
糯米团子沐沐
只有你想不到的,没有你做不到的
展开
-
七大排序
1. 插入排序1.1 算法思想将整个数组a分成有序和无序两部分,有序的部分为[0, i),无序为[i,a.length)。每次取出无序中的第一个元素,将这个元素的值放到一个变量中,和有序部分中的每一个值都做比较,如果有序部分的值大于变量值,将有序的部分的这个值向后移动一个位置。1.2 时间复杂度最好: O(n)最坏: O(n^2)1.3 代码//插入排序 public v...原创 2019-11-24 19:06:24 · 115 阅读 · 0 评论 -
堆结构之大根堆排序
概念堆是一种特殊的树形数据结构,其每个节点都有一个值,通常提到的堆都是指一颗完全二叉树,根结点的值小于(或大于)两个子节点的值,同时,根节点的两个子树也分别是一个堆。排序思想堆排序就是利用堆(假设利用大顶堆)进行排序的方法。它的基本思想是,将待排序的序列构造成一个大顶堆。此时,整个序列的最大值就是堆顶的根节点。将它移走(其实就是将其与堆数组的末尾元素交换,此时末尾元素就是最大值...原创 2019-09-23 19:54:20 · 1315 阅读 · 0 评论 -
优先级队列概述
概念优先队列是一种用来维护一组元素构成的集合S的数据结构,其中每个元素都有一个键值key,元素之间的比较都是通过key来比较。优先队列包括最大优先队列和最小优先队列。算法分析基于最小优先队列进行讨论,顾名思义:出队,队头元素是最小的;入队,直接在队尾插入就可以了。时间复杂度优先级队列依旧是队列,队列具有的属性和操作,优先级队列也都是具有的。真正影响时间复杂度的就是入队...原创 2019-09-23 19:48:26 · 181 阅读 · 0 评论 -
实现对顺序表的增删查改以及打印
下面这个代码是一开始就定义好的数组大小,现在说一下我的顺序表的大概思想吧。增增也就是要对组数进行插入操作,插入又分为三种情况,头插,尾插和指定下标的插入;其实也可以直接看成一种情况,那就是指定位置插入,头插也就是把位置设定成第0个元素,尾插就是把把位置设定成size所在的地方,下面我对三种情况具体分析。头插:首先要判断数组是否已满,如果数组已满则要给反馈一个信息给用户,提示数组...原创 2019-09-09 17:55:13 · 655 阅读 · 0 评论 -
【数据结构】实现对链表的头插和尾插
对于一个链表,要对其进行插入,可以分成头插,尾插和指定位置插入,下面代码中,我只涉及到了头插和尾插。头插首先定义一个node,如果head的值为null,直接返回node;如果head的值不为null,将node.next指向head,再把node作为头结点,再返回head。说是两种情况,其实用后者的代码就能全部包含。假设这是一个不为空的链表(图1),head指向的是1...原创 2019-09-08 15:30:45 · 284 阅读 · 0 评论 -
利用继承关系完成顺序表和链表对线性表的实现
在抽象类List中写出三个抽象方法,头插(pushFront),尾插(pushBack)和任意插入(insert)public class List { protected int size = 0; public void insert(int index,int element){ } public void pushFront(int element...原创 2019-09-08 08:20:26 · 610 阅读 · 0 评论 -
【数据结构】删除有序链表中重复的结点
问题:在一个有序的链表中,删除重复的节点分析:1.定义两个节点 p,q和一个前驱节点 pre2.令p 指向head,q指向head.next ,pre作为p的前驱3.当q 指向的不为空时1)当p 所指向的值与q不相等时,pre 指向p,p指向q,q指向q.next2)当p 所指向的值与q相等时, pre 和 p 不动,q 向后一直移动,直到...原创 2019-09-07 17:12:34 · 525 阅读 · 0 评论 -
单链表
package jing.able.dao;import jing.able.impl.ILinked;/** * @author panjing * @describe:单链表 * @date 2019/4/3 * @time 21:06 */public class Linked implements ILinked { class Node { ...原创 2019-04-28 10:18:34 · 250 阅读 · 0 评论 -
不带头双向链表实现
package jing.able.dao;import jing.able.impl.IDoubleLinked;/** * @author panjing * @describe: 双向链表 * @date 2019/4/7 * @time 12:03 */public class DoubleLinkList implements IDoubleLinked { ...原创 2019-04-27 21:48:43 · 231 阅读 · 0 评论 -
简单栈的实现
package jing.able.impl;/** * @author: panjing * @describe: * @date: 2019/4/14 * @time: 15:07 */public interface IMyStack { // 将 item 压入栈中 void push(int item); // 返回栈顶元素,并且出栈 i...原创 2019-04-27 21:40:23 · 226 阅读 · 0 评论 -
循环队列
package jing.able;/** * @author: panjing * @describe: 循环队列 * @date: 2019/4/21 * @time: 14:43 */public class MyCircularQueue { private int front; //队头 private int rear; //队尾 priv...原创 2019-04-27 21:38:03 · 140 阅读 · 0 评论