![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构类型
自在强
这个作者很懒,什么都没留下…
展开
-
数据结构-笔记(第一章)
数据结构与算法—–C语言版第一章数据结构与算法的简介一.数据结构1.1.1什么是数据结构 1 数据: (定义)数据是指能直接输入到计算机中,被计算机处理的符号或被计算机操作的对象。数据不仅包括整型,实型。等数值数据也包括声音,视频,图像非数值数据。 (俩个必备条件) A 能直接从计算机输入 B能被计算机直接处理 2 数据元素 A数据元素是数据结构的基本的独立单位,它也被叫作,元素,结点原创 2017-06-11 17:31:56 · 895 阅读 · 0 评论 -
排序&&冒泡排序
排序的意义:所谓排序是将一组数据依照一定的顺序排列起来最常见的排序是“从小到大”的“递增排序”和“从大到小的递减排序排序的特性: 稳定性: 排序过后能直接使相同的数据保持顺序中的相对位置 ”不稳定性 排序过后不能使值相同的数据保持原顺序中的相对位置 排序的分类: 外部排序:欲处理的数据量过于庞大,无法全部存放到内部存储器,必须借助外部原创 2018-02-05 18:02:05 · 154 阅读 · 0 评论 -
排序&&快速排序
快速排序: 分解:将输入的序列L【p..r】划分为俩个非空子序列L【p..q】和L【q+1..r】,且使L【p..q】中 任一个元素值不大于L【q+1..r】中任一元素。 递归求解: 通过递归调用快速排序算法分别对L【p..q】和L【q+1..r】进行排序 合并: 将排序后的L【p..q】和L【q+1..r】合并到一起就是结原创 2018-02-05 18:04:12 · 154 阅读 · 0 评论 -
排序&&选择排序
选择排序(Selection sort) 是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素 ,存放在序列的起始位置,直到全部待排序的数据元素排完。package Sort;/** * 选择排序 * */public class Select_Sort { int[] a; public Select_Sort() {...原创 2018-02-26 10:30:18 · 142 阅读 · 0 评论 -
排序&&希尔排序
希尔排序法希尔排序法又称缩小增量法。希尔排序法的基本思想是:先选定一个整数, 把待排序文件中所有记录分成个组,所有距离为的记录分在同一组内 ,并对每一组内的记录进行排序。然后,取,重复上述分组和排序的工作。 当到达=1时,所有记录在统一组内排好序。 各组内的排序通常采用直接插入法。由于开始时s的取值较大, 每组内记录数较少,所以排序比较快。随着不断增大 ,每组内的记录数逐步增多,但...原创 2018-02-26 10:32:13 · 140 阅读 · 0 评论 -
排序&&堆排序
package Sort;import java.util.Arrays;/** * 堆排序 *1,堆排序也是选择排序的一种,根据堆的特性,每次把最大或最小值(本次以最大值为例) *拿出来,按序排列;2,堆排序是对普通选择排序的一种优化:如果是一个稳定堆,每次在选择最大值时,只用沿着二叉树其中一个分叉去交换即可,其他分叉符合堆得特性(因是排好的稳定堆),可以看作是稳定的,不用重...原创 2018-02-26 10:33:23 · 132 阅读 · 0 评论 -
排序&&归并排序
package Sort;/** * 归并排序 * * 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and * Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列; * 即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表, * 称为二路归并。归并排序的基本思想将待排序序列R[0...n-...原创 2018-02-26 10:34:04 · 132 阅读 · 0 评论 -
排序&&基数排序
package Sort;import java.util.Arrays;/** * 基数排序 * 基数排序理论很好理解,基本思想就是:将所有待比较数值(正整数)统一为同样的 * 数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。 * 这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。 * * 1 100 20, 3...原创 2018-02-26 10:34:45 · 158 阅读 · 0 评论 -
查找&&线性查找
package Search;public class LinearSearch { public boolean lSearch(int[] a,int key) { for(int i=0;i原创 2018-02-26 10:35:48 · 166 阅读 · 0 评论 -
查找&&非递归形式查找
package Search;public class BinarySearch1 { /** * 非递归形式 * * 形参:@数组 @要查找的关键字 * * 找到关键字后打印其位置 * * return 是否找到关键字 */ public boolean bSearch(int[] a,i...原创 2018-02-26 10:36:30 · 186 阅读 · 0 评论 -
插入排序&&直接插入
插入排序有哪些包括:直接插入排序,二分插入排序(又称折半插入排序),链表插入排序,希尔排序(又称缩小增量排序)。 属于稳定排序的一种(通俗地讲,就是两个相等的数不会交换位置) 直接插入排序直接插入排序是一种简单的插入排序法,其基本思想是:把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列。例如,已知待排序的...原创 2018-02-05 18:07:48 · 281 阅读 · 0 评论 -
二叉树
二叉树: 基本性质 用链表表示二叉树 用数组表示二叉树 树形结构的特点是一个节点可以有多个后继是一种常用的非线性结构树定义: 树是N(N>=0)个节点的有穷集合:满足: 有且仅有一个称为根的节点 其余节点分为m(m>=0)个互不相交的非原创 2018-01-27 22:19:04 · 186 阅读 · 0 评论 -
线性链表&&单项链表
链表的概念 数组作为数据存储结构的缺陷; 在无序数组中,搜索是低效的 而在有序数组中插入效率又低下 不管在那一种数组中删除效率都很低 创建一个数组后,它的大小是不可变的 链表: 链表可以是一种有序或无序的列表 链表的内容通常存储在内存中分散的位置上 链表由节点组成,每一个原创 2018-01-21 11:27:24 · 505 阅读 · 0 评论 -
线性表之循环列表
循环链表: 循环链表与单链表的区别仅仅在于其尾结点的链域值不是null,而是指向首节点节点的作用。public class Clink { //定义头结点 Node head; public Clink() { //建表 //头结点不会放数据的 head=new Node(); head.原创 2018-01-21 11:30:47 · 794 阅读 · 0 评论 -
线性列表&&双向列表
双向链表: 在单链表中,每个节点所含的链域指向后继节点,故从任一节点后继很方便,但要找到 前驱及节点比较困难。public class DNode { String name; DNode next,prev; public DNode() { } public DNode(String name) { t原创 2018-01-21 11:32:57 · 463 阅读 · 0 评论 -
线性列表&&学生的信息的测试题
创建一个学生列表,对其进行操作package TestLink;import java.io.Serializable;/** * 设计一个学生类,姓名,学号,年龄,班级 * */public class Student implements Serializable{ private String number; private String name;原创 2018-01-21 11:37:44 · 138 阅读 · 0 评论 -
堆栈基本操做&&顺序存储
堆栈 堆栈数据结构只允许数据自有序列表(前端)做输入,输出操作 最后被输入的数据项会最先被取出来 具有先进后出的FILO(FIRST IN LAST OUT)的特性堆栈的应用举例 子程序的调用:在跳往子程序前,会讲下一个指令的地址存放在堆栈中,直到子程序执行完成在将地址取出来, 回到原来的程序中 处理递归调用:和子程序的调原创 2018-01-21 11:42:01 · 401 阅读 · 0 评论 -
堆栈基本操作&&调用java的Stack的类
import java.util.Stack;/** * 默认是10 * 如果不够就增加一倍 * */public class StackDemo1 { public static void main(String[] args) { Stack stack=new Stack; stack.push("组长"); stack.p原创 2018-01-21 11:46:59 · 307 阅读 · 0 评论 -
堆栈练习-判断输入的语句的括号是否对应
判断输入的语句的括号是否对应package testStack; import java.util.Stack; /** * 判断输入的语句的括号是否对应 * */ public class GrammerStack { public static void main(String[] args) {原创 2018-01-21 21:09:15 · 189 阅读 · 0 评论 -
堆栈的基本操作&&链式存储
public class Node { String name; Node next; public Node() { name=null; next=null; } public Node(String name) { this(name,null); } public Node(String原创 2018-01-21 11:43:55 · 283 阅读 · 0 评论 -
队列的基本操作概念及各种实现方式的代码
1简介队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。 队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在一端插入,在另一端删除,所以只原创 2018-01-23 22:01:18 · 2038 阅读 · 0 评论 -
查找&&递归形式的查找
package Search;public class BinarySearch2 { /** * 递归形式 * * 形参:@数组名 @被查找的关键字 @左边界 @右边界 * * 当找到关键字时输出其位置并返回true,否则返回false */ public boolean bSearch(int[] a,int...原创 2018-02-26 10:37:11 · 406 阅读 · 0 评论