数据结构自学路
Jason_x1997
这个作者很懒,什么都没留下…
展开
-
顺序存储二叉树的前中后序遍历
顺序存储二叉树的前、中、后序遍历概念什么是顺序存储二叉树?我们知道顺序存储对于树这种一对多的关系结构实现起来还是很困难的,但是二叉树是一种特殊的树,由于它的特殊性,使得用顺序存储结构也可以实现。二叉树的顺序存储结构就是用一维数组存储二叉树中的结点,并且结点的存储位置,也就是数组的下标要能体现节点间的逻辑关系(父子关系,左右兄弟关系)。顺序存储结构的特点:顺序存储结构一般只考虑完全二叉树二叉树中第n个元素的左子结点的数组下标为(2*n+1)二叉树中第n个元素的右子结点的数组下标为(2*n原创 2020-11-05 19:41:20 · 1458 阅读 · 0 评论 -
内部排序之快速排序(巨详细!!!)
快速排序简介快速排序(Quicksort)是对冒泡排序的一种改进。 快速排序由C. A. R. Hoare 在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。基本思想1)选择一个基准元素,通常选择第一个元素或者最后一个元素,2)通过一趟排序讲待排序的记录分割成独立的两部分,其中一部分记录的元素值均比基准元素原创 2020-11-01 23:16:14 · 305 阅读 · 0 评论 -
内部排序之直接插入排序
直接插入排序简介插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法。基本思想插入排序的基本思想是将一个待排序的数组分为两个部分,一部分是已经排好序的,另一部分是待排序的,然后将待排序的部分依次和已排序的部分进行比较,比较完毕再插入到正确的位置,然后插入位置之后的数据后移。在我看来现实生活中有一个最形象的事件可以说说插入排序的最好例子——打麻将时摸牌,每次从桌上摸到一张牌,就和自己已有的牌进行比较,然后放入,插入排序就是如此。图解代码实现 //按升序原创 2020-11-01 20:11:37 · 346 阅读 · 0 评论 -
内部排序之选择排序(java实现)
简单排序之选择排序选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。时间复杂度最好和最坏都为为 O(n^2)代码实现:public static void selectSort(int[] arr){ int temp =原创 2020-11-01 19:29:45 · 162 阅读 · 2 评论 -
数据结构之后缀表达式求值(java实现)
数据结构之后缀表达式求值(java实现)前记 今天在刷leet code的时候刷到了一道题,后缀表达式(逆波兰表达式)求值,我花了一会儿写了一下它的解法。但是今天我不谈什么是后缀表达式,有兴趣的同学可以去论坛上看看其他人聊后缀表达式的问题,单就解题来说,我用了最为常规的办法,应该也是初学者最容易理解的方法写的,故代码数量较多,一定要读下去哦!图解分析首先我们拿出一个后缀表达式的例子,这里我直接用力扣上的测试用例。String[] expression = {"2", "1", "+", "3"原创 2020-10-21 20:41:21 · 2963 阅读 · 7 评论 -
冒泡排序学习及简单优化(java)
冒泡排序是排序算法里面较为简单的一种排序方法,两年前学习该排序算法时,总是很懵,不知道它和选择排序有什么区别,随着学习的深入,我理解了它为什么要叫做冒泡排序。之所以叫冒泡,我们可以想象一个现象。桶里面装了一桶水,我们扔下一块石头,那么桶里面的水是不是会冒出一连串的水泡到水面上炸开。石头就相当于是一个待比较的数,它进去和水里面的其它数作比较,遇到比它大(小)的就去和它交换位置,然后大(小)的数就继续往下走,去交换更大(小)的数到水面上来。 这就是为什么要叫冒泡排序。接下来,我将用代码具体实现其基本操作,并原创 2020-09-25 23:44:12 · 247 阅读 · 0 评论 -
自定义实现数据结构中的双向链表(JAVA实现)
**自定义实现数据结构中的双向链表**双向链表是数据结构线性表中的一种,较单向表来说,使用起来会更加方便,特别是在插入和删除时能更好寻找结点,所以我尝试着自己来实现一下双向链表,供大家参考和提建议,找bug。首先要弄清楚双向链表的结构:结点 Node,每个结点都由三个部分组成,直接前驱指示previous,结点中的对象object,直接后继指示next,结点如图结点实现如下:public class Node { /*private*/ Node privoius; /*pr原创 2020-09-24 18:03:44 · 963 阅读 · 0 评论 -
自定义实现顺序表(C语言)
近段时间在学数据结构,看到顺序表的时候,尝试着自己去实现一下,但是总感觉有问题,自己的代码,特别是DestoryLIst那个方法,我有很多疑问,为什么销毁顺序表之后还是能去使用它和调用,发出来让大家找找错误,第一次写博客,不喜勿喷。#include “stdio.h”#include “stdlib.h”#define MAX_SIZE 10#define ADDITION 10#define ERROR 0typedef struct {int* data;int length;int原创 2020-09-23 22:28:39 · 341 阅读 · 0 评论