数据结构
Weiami
以梦为马,以汗为泉,不忘初心,不负韶华。
展开
-
数据结构_排序算法(交换排序)
排序算法 交换排序 基本思想:两两比较待排序记录的关键字,一旦发现两个记录不满足次序要求则进行交换,直到整个序列满足要求为止。 分类:根据交换思想的不同,可以将交换排序分为:冒泡排序和快速排序。 1.冒泡排序 冒泡排序是一种最简单的交换排序算法,通过两两比较相邻记录的关键字,如果发生逆序,则进行交换,从而使关键字小的记录如气泡一般逐渐往上“漂浮”,或者使关键字大的记录如石块一样逐渐向下“坠落” 分析:时间复杂度O(n^2),空间复杂度O(1),算法稳定。 #include <stdio.h>原创 2020-12-31 16:32:11 · 467 阅读 · 0 评论 -
数据结构_排序算法(插入排序)
排序算法 插入排序 基本思想:插入排序每一趟将一个待排序的记录,按其关键字的大小插入到已经排好序的一组记录的适当位置,直到所有待排序记录全部插入为止。 举例:打扑克牌在抓牌时要保证抓过的牌有序排列,则每抓一张牌就要插入到合适的位置,直到抓完牌为止,即可得到一个有序序列。 分类:可以选择不同的方法在已排好序的记录中寻找插入位置。根据查找方法的不同,可将插入排序分为:直接插入排序、折半查找排序和希尔排序。 1.直接插入排序 直接插入排序是一种简单的排序算法,基本操作是将一条记录插入到已经排好序的有序表中 分析原创 2020-12-27 22:03:28 · 627 阅读 · 0 评论 -
数据结构_顺序表与链表的比较
顺序表与链表 从逻辑结构、存储结构、基本操作三个方面来对比顺序表与链表。 根据顺序表与链表的优缺点,分析其应用场景 逻辑结构 顺序表和链表都是线性结构,都属于线性表 存储结构 顺序表(顺序存储):随机存取,存储密度高,需要大片连续的存储空间,改变容量不方便 链表(链式存储):离散的存储空间,改变容量方便,不可随机存取,存储密度低 基本操作 创建: 顺序表创建时必须预先分配大片的连续存储空间 链表开始创建时只需为头节点动态分配存储空间 销毁: 顺序表销毁时需修改表的长度,使Length=0;原创 2020-08-23 20:21:13 · 473 阅读 · 0 评论 -
数据结构_线性表的链式存储
链表 链表是链式存储方式实现的线性表 逻辑上相邻的数据元素物理上不一定相邻 单链表 单链表的节点有一个数据域和一个指针域,数据域存放数据,指针域用来指向下一个节点 单链表基本操作的实现(C语言) #include <stdio.h> #include <stdlib.h> //单链表数据类型 typedef struct LNode{ //节点 int data; //数据域 struct LNode *next; //指针域 }LNode, *LinkLis原创 2020-08-22 21:06:08 · 195 阅读 · 0 评论 -
数据结构_线性表的顺序存储
顺序表 1.以静态分配为例,完成基本操作: #include <stdio.h> #define MaxSize 10 //顺序表的结构体 struct SeqList{ int data[MaxSize]; int length; }; //顺序表的初始化 void InitSeqList(struct SeqList *p) { p->length = 0; } void AddSeqList(struct SeqList *q) { int i, n = 4原创 2020-08-17 23:12:11 · 265 阅读 · 0 评论 -
数据结构_线性表
线性表 线性表的定义 定义:线性表是由类型相同的数据元素组成的有限序列。 注意三个关键字(相同类型、有限、序列) 线性表的特点 特点: 线性表一定存在唯一的第一个元素 线性表一定存在唯一的最后一个元素 除第一个元素外,其他元素都有直接前趋 除最后一个元素,其他元素都有直接后继 线性表的每一个元素都具有相同的数据类型 线性表的每一个元素都有位置和值,位置是元素与其他元素的关系,值是元素的具体内容 线性表中元素的位置和值可以有关系,也可以没关系 线性表的基本操作 基本操作:线性表的初始化,数据元素的插入原创 2020-08-17 23:04:22 · 142 阅读 · 0 评论