![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
寒小韩_
哈哈!菜鸟小猿一枚~
展开
-
栈
原文参考: (1)http://www.cnblogs.com/skywang12345/p/3562239.html (2)http://c.biancheng.net/view/3351.html (3)http://c.biancheng.net/view/3350.html 什么是栈(stack) 栈(stack )又称堆栈,它是运算受限的线性表,其限制是仅允许在表的一端进行插入和删除操作,不允许在其他任何位置进行插入、查找、删除等操作。 表中进行插入、删除操作的一端称为 栈顶(top),栈顶保存的原创 2020-10-03 15:49:13 · 183 阅读 · 0 评论 -
线性表——数组与链表
概要 线性表是一种线性结构,它是具有相同类型的n(n≥0)个数据元素组成的有限序列。本文先介绍线性表的几个基本组成部分:数组、单向链表、双向链表;随后给出双向链表的Java语言的实现。 文章转载自:https://www.cnblogs.com/skywang12345/p/3561803.html 数组 数组是一种最常用的线性数据结构,里面存放的元素的类型是一样的,并且有序的。 数组的特点是:数据是连续的;随机访问速度快。 对于Java而言,Collection集合中提供了ArrayList和Vecto原创 2020-10-02 14:56:24 · 235 阅读 · 0 评论 -
排序之插入排序
简介 插入排序的工作方式类似于人们排序一手扑克牌,开始时,我们左手为空并且桌子上的牌面朝下。然后,我们每次右手从桌子上拿起一张牌并将它插入导左手中的正确位置。 算法原理 将所有的元素分为两组:已排序和未排序的; 找到未排序组的第一个元素,向已排序的组中插入; 倒序遍历已经排序的元素,依次和待插入的元素进行比较,直到找到一个元素等于待插入元素,那么就把待插入元素放到这个位置,其他元素往后移动一位。 动图演示 代码示例 public class InsertionSort { public voi原创 2020-07-07 22:55:30 · 113 阅读 · 0 评论 -
排序之选择排序
选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²)的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。 算法步骤 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始(末尾)位置。 再从剩余未排序元素中继续寻找最小(大)元素,然后放到未排序序列的起始(末尾)位置。 重复第二步,直到所有元素均排序完毕。 动图演示 代码演示 /**选择排序*/ public class SelectionSort { public vo原创 2020-07-07 20:58:40 · 159 阅读 · 0 评论 -
排序之冒泡排序
冒泡排序(Bubble)是一种比较简单的排序算法。 需求 排序前:{4,5,6,3,2,1} 排序后:{1,2,3,4,5,6} 排序原理 比较两个相邻的元素,将值大的元素交换到右边 排序思路 依次比较相邻的两个数,将较小的数放在前面,将较大的数放在后面。 第一次比较:首先比较第一和第二个数,将小数放在前面,将大数放在后面 比较第2和第3个数,将小数 放在前面,大数放在后面。 以此类推 如此继续,知道比较到最后的两个数,将小数放在前面,大数放在后面,重复步骤,直至全部排序完成 在上面一趟比较完成后,最后一原创 2020-07-07 20:23:32 · 222 阅读 · 0 评论