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