![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
minlian666
为了那一点点坚持而努力
展开
-
十大经典排序算法-冒泡排序
冒泡排序 实现原理 冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 实现步骤 1:比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2:对每一对相邻元素作...原创 2019-12-15 21:00:56 · 1207 阅读 · 1 评论 -
十大经典排序算法-选择排序
选择排序 实现原理 选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。 实现步骤 1:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置 2:再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。: 3:重复第二步,直到所有元素均排序完毕。 public cl...原创 2019-12-15 20:24:01 · 172 阅读 · 0 评论 -
十大经典排序算法-插入排序
插入排序 实现原理 插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴,但它的原理应该是最容易理解的了,因为只要打过扑克牌的人都应该能够秒懂。插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 实现步骤 1:将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。 2:从头到尾依...原创 2019-12-15 19:50:45 · 286 阅读 · 0 评论 -
数据结构-队列
定义 队列也是一种线性数据结构,与数组相比,队列对应的操作是数组的子集。 特点 只能从一端 (队尾) 添加元素,只能从另一端 (队首) 取出元素。 应用 队列的应用可以在播放器上的播放列表,数据流对象,异步的数据传输结构(文件IO,管道通讯,套接字等)上体现,当然最直观的的就是排队了。 接口 说明 复杂度 void enqueue(E e) 入队 O(1) 均摊 E deque...原创 2019-12-15 15:59:40 · 279 阅读 · 0 评论 -
数据结构-栈
定义 栈是一种线性结构,与数组相比,栈对应的操作是数组的子集。 特点 它只能从一端添加元素,也只能从一端取出元素(这一端称之为栈顶)。 应用 Stack这种数据结构用途很广泛,在计算机的使用中,大量的运用了栈,比如编译器中的词法分析器、Java虚拟机、软件中的撤销操作(Undo)、浏览器中的回退操作,编译器中的函数调用实现等等。 接口 说明 复杂度 void push(E e) 向...原创 2019-12-15 15:17:50 · 205 阅读 · 0 评论 -
数组-二次封装属于自己的数组(动态数组)并结合时间复杂度进行分析
public class Array<E> { //size 数组中实际有多少元素 //capacity 数组本身是静态的,创建的时候必须指定大小,数组空间最多可以装多少元素 //date 数组名 private E[] data; private int size; //构造函数,传入数组的容量capacity构造Array ...原创 2019-11-25 18:09:45 · 106 阅读 · 0 评论