数据结构
概念
<font color="#0076b3">数据结构是指相互有关联的数据元素的集合</font>
带有结构的数据元素的集合
一个是要有元素,另一个是要有关系
逻辑结构
所谓的数据的逻辑结构是指反映数据元素之间的逻辑关系的数据结构
存储结构
存储结构是指数据的逻辑结构在计算机实际存储空间的存放形式
数据结构的分类
线形结构(线形表)
条件
1.有且只有一个根节点
2.每一个结点最多有一个前件,也最多有一个后件
非线性结构
如果一个数据结构不是线形表,则是非线形表
线性表
概念
线性表是由n个元素组成的一个有序列表,表中的每一个数据元素,除了第一个外,有且只有一个前件,除了最后一个外,有且只有一个后件
线性表的顺序存储结构
线性表的各数据在存储空间上是按照逻辑顺序依次存放
线性表的插入运算
在插入的位置包括该位置的元素及其后面的元素往后移动
线性表的缺点
数据操作需要移动大量的数据元素
容易发生上溢错误
存储空间不方便分配
常用算法
查找技术
顺序查找
一般用于线性表中查找特定的元素,从第一个开始,逐个比较,直到找到,或者没有。
最坏情况次数:n
二分法查找
只适用于顺序存储的有序表(有序表是指线性表的元素按值非递减排序,允许元素相等)
最坏情况下遍历:log2(N)次
排序技术
交换排序法
概念
所谓的交换排序法是指借助数据元素之间的相互交换进行排序的一种方法
冒泡排序法
1.有多少个元素就进行多少轮的循环
2.每一轮,不断的将两个相邻的元素比较,然后交换位置,第一轮就得到了一个最值放在最后,其他元素再重复操作直到有序
3.下一轮的比较中,不再比较上一轮得到的最大值。
最坏情况的比较:n(n-1)/2次
快速排序法
取出一个元素,将大于该元素的放在一边,小于该元素的放在一边,将线性表分成了两部分,再对两边进行同样操作直到有序
最坏情况的比较:n(n-1)/2次
注意:实际过程中,快速排序法比冒泡排序法快
插入排序法
概念
所谓插入排序法是指将无序的各元素插入到有序的线性表中
简单插入法
把第一个元素当成有序表,取后面的元素,依次插入到有序表中,插入的原则是小的插到前面,大的插到后面直到有序
最坏比较:n(n-1)/2次
希尔排序法
将整个无序列表分成若干个小的子序表分别进行排序
比较:n^1.5
选择排序法
概念
选择排序法是指从整个线性表中选择一个最值,将它交换到最前面,剩余的也是同样的操作
简单选择法
扫描整个线性表,取出最小值放在前面,后续元素同样操作直到有序
比较:n(n-1)/2次
堆排序法
对于满二叉树进行选择排序,原则是跟结点最大,父结点大于子结点
比较:N*log_2 N
动态仿真表示过程:https://www.cnblogs.com/onepixel/articles/7674659.html