(64)王道数据结构-冒泡排序基本概念根据序列中两个元素关键字的比较结果来对换这两个记录在序列中的位置。 冒泡排序基本思想是:假设待排序表长为n,从后往前(或从前往后) 两两比较相邻元素的值,若为逆序(即A[i-1]>A[i]),则交换它们,直到序列比较完。 代码逻辑12345678910111213141516171819202122//交换void swap(int &a, int &b) { 2022-08-23 信工核心 #数据结构 #冒泡排序
(63)王道数据结构-希尔排序基本概念直接插入排序算法适用于基本有序的排序表和数据量不大的排序表。基于这两点,提出了希尔排序,又称缩小增量排序。 基本思想先将待排序表分割成若干形如L[i, i+d, i+2d,…, i+kd]的“特殊”子表,分别进行直接插入排序,当整个表中的元素已呈“基本有序”时,再对全体记录进行一次直接插入排序。 排序过程先取一个小于n的步长d1,把表中的全部记录分成d1组,所有距离为d1的倍数的记录放在同 2022-08-22 信工核心 #数据结构 #希尔排序
(62)王道数据结构-插入排序基本概念每次将一个待排序的记录按其关键字大小插入到前面已安排好序的子序列中,直到全部记录插入完成。 插入排序在实现上通常采用就地排序[空间复杂度为O(1)],因而在从后向前的比较过程中,需要反复把已排序元素逐步向后挪位,为新元素提供插入空间。 直接插入排序假设在排序过程中,待排序表L[1…n]在某次排序过程中的某一时刻状态如下: 有序序列L[1…i-1] L(i) 无序序列L[i 2022-08-22 信工核心 #数据结构 #插入排序
(61)王道数据结构-排序的基本概念基本概念排序就是重新排列表中的元素,使表中的元素满足按关键字递增或递减的过程。 严格定义输入: n个记录R1,R2,…,Rn,对应的关键字为ki,k2,…,kn 输出: 输入序列的一个重排R1’,R2’,…,Rn’,使得有ki≤k2’≤…≤kn’, (其中“≤”可以换成其他的比较大小的符号) 评价指标内部排序算法的性能取决于算法的时间复杂度和空间复杂度,而时间复杂度发般是由比较和移动的次数决定的。 2022-08-22 信工核心 #数据结构 #树 #B树 #散列查找
(60)王道数据结构-散列查找原文地址:散列查找 基本概念散列(Hashing)通过散列函数(哈希函数)将要参与检索的数据与散列值(哈希值)关联起来,生成一种便于搜索的数据结构,我们称其为散列表(哈希表),也就是说,现在我们需要将一堆数据保存起来,这些数据会通过哈希函数进行计算,得到与其对应的哈希值,当我们下次需要查找这些数据时,只需要再次计算哈希值就能快速找到对应的元素了 散列函数散列函数也叫哈希函数,哈希函数可以对一个目标 2022-08-22 信工核心 #数据结构 #树 #B树 #散列查找
(59)王道数据结构-B+树原文地址:B+树 基本概念它不像B树那样,B树并不是只有最后一行会存储卫星数据,此时比较凌乱。因为只有最后一行存储卫星数据,使用B+树,同样大小的磁盘页可以容纳更多的节点元素,这就意味着,数据量相同的情况下B+树比B树高度更低,减小磁盘IO的次数。 其次,B+树的查询必须最终查找到叶子节点,而B树做的是值匹配,到达结点之后并不一定能够匹配成功,所以B树的查找性能并不稳定,最好的情况是只查根节点即可 2022-08-22 信工核心 #数据结构 #树 #B树
(58)王道数据结构-B树原文地址:B树 基本概念B树(Balance Tree),它是专门为磁盘数据读取设计的一种度为 m 的查找树(多用于数据库)它同样是一棵平衡树,但是不仅限于二叉。得益于B树这种结点少,高度平衡且有序的性质,而硬盘IO速冻远低于内存,我们希望能够花费尽可能少的时间找到我们想要的数据,减少IO次数,B树就非常适合在硬盘上的保存数据,它的查找效率是非常高的。 基本规则1.树中每个结点最多含有m个孩子(m 2022-08-22 信工核心 #数据结构 #树 #B树
(57)王道数据结构-分块查找基本概念分块查找又称索引顺序查找,它吸取了顺序查找和折半查找各自的优点,既有动态结构,又适于快速查找。缩印表中保存每个分块的最大关键字和分块的存储区间。 具有块内无序、块间有序的特点 基本思想将查找表分为若干子块。块内的元素可以无序,但块之间是有序的,即第一个块中的最大关键字小于第二个块中的所有记录的关键字,第二个块中的最大关键字小于第三个块中的所有记录的关键字,以此类推。再建立一个索引表,索引表 2022-08-21 信工核心 #数据结构 #查找 #分块查找
(56)王道数据结构-折半查找基本概念折半查找又称二分查找,它仅适用于有序的顺序表。 基本思路是:1.在[low,high]之间找目标关键字,每次检查mid = (low+heigh)/22.根据mid所指元素与目标关键字的大小调整low或high,不断缩小low和high的范围3.若low > high则查找失败 代码逻辑1234567891011121314151617181920typedef struct 2022-08-21 信工核心 #数据结构 #查找 #折半查找
(55)王道数据结构-顺序查找基本概念顺序查找又称线性查找,主要用于在线性表中进行查找。顺序查找通常分为对一般的无序线性表的顺序查找和对按关键字有序的顺序表的顺序查找。 代码逻辑12345678910typedef struct { //查找表的数据结构 ElemType *elem; //动态数组基址,建表时按实际长度分配,0号单元留空 Int TableLen; //表的长度}SSTable 2022-08-21 信工核心 #数据结构 #查找 #顺序查找