数据结构
Dorby .
我只想要一个我想要的生活
展开
-
红黑树
公众号:CppCoding红黑树即使AVL树拥有平衡特性,但它是通过其不断的旋转操作来实现的,最坏情况下将每回溯一层都要进行旋转调整。即数据量大了以后,AVL树的旋转操作就拖慢了插入和删除的时间。为此引入了红黑树,它具有良好的旋转次数,不至于影响结点插入和删除的时间效率。红黑树的性质红黑树优先插入的结点颜色为红色,因为可以不改变以前树中黑色的数量性质1 : 每一个节点是要么是红色要...原创 2019-11-24 18:20:07 · 93 阅读 · 0 评论 -
平衡二叉树(AVL)
公众号:CppCoding平衡二叉树二叉查找树给我们带来了很多方便,但是由于其在有序序列插入时就会退化成单链表(时间复杂度退化成 O(n)),AVL-tree就克服了上述困难。AVL-tree是一个“加上了平衡条件的”二叉搜索树,平衡条件确保整棵树的深度为O(log n)。AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树...原创 2019-11-24 15:13:18 · 230 阅读 · 0 评论 -
二叉搜索树
二叉树的性质:若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;任意节点的左、右子树也分别为二叉查找树。没有键值相等的节点。二叉搜索树的时间复杂度为O(logN)查找二叉树中的某个元素若b是空树,则搜索失败,否则:若x等于b的根节点的数据域之值,则查找成功;否则:若x小于b的根节点的...原创 2019-11-23 19:38:17 · 178 阅读 · 0 评论 -
字符串匹配算法
BF算法:该算法的是从主字符串中的第start个字符起和目标串的第一个字符比,如果相等,则继续比较后面的字符。比较时如果不相等,则回溯到主串的第start+1个字符,在重新开始上面的步骤。由于涉及多次回溯,算法效率低。算法的复杂度为 O((n-m)m)int index(char s[],char t[],int start){ int i,j,m,n; m=len(s); n=le...原创 2019-10-27 13:10:59 · 131 阅读 · 0 评论 -
冒泡、选择和插入排序
冒泡排序#ifndef __BUBBLE_H__#define __BUBBLE_H__void bubble_sort(int arr[],int n){ for(int i=0;i<n-1;i++){ if(arr[i]>arr[i+1]){ int temp=arr[i]; arr[i]=arr[i+1]; arr[i+1]=temp; } ...原创 2019-05-02 23:58:06 · 201 阅读 · 0 评论 -
数据结构:顺序表
数据结构中最常用最简单的结构是线性结构。线性结构,又称线性表。逻辑结构上数据元素之间存在一个对一个的相邻关系。线性结构是n个数据元素的有序(次序)集合,它有下列几个特征:1.集合中必存在唯一的一个"第一个元素";2.集合中必存在唯一的一个"最后的元素";3.除最后元素之外,其它数据元素均有唯一的"后继";4.除第一元素之外,其它数据元素均有唯一的"前驱"。顺序表简述顺序表是用一组地址...原创 2019-04-24 22:46:10 · 436 阅读 · 0 评论 -
归并排序、希尔排序和快速排序
归并排序void merge(int arr[],int n,int mid){ int temp[n]; memcpy(temp,arr,n*sizeof(int));//将arr所指的地址大小为n个int类型的数据复制到地址为temp int p=0,q=mid,k=0; while(p<mid && q<n) arr[k++]=temp[p]<te...原创 2019-05-11 16:30:44 · 294 阅读 · 0 评论 -
基础数据结构和算法:时间复杂度和空间复杂度
算法运行效率体现在两个方面:1.算法的运行时间 (时间复杂度)2.运行算法所需的内存空间的大小 (空间复杂度)表示时间复杂度用O记号表示算法的时间性能P(多项式)NP (非确定多项式)常用的时间复杂度从小到大的排序如何计算时间复杂度1.找出循环次数最多的语句2.计算基本语句的执行次数的数量级只保留最高次幂,忽略低次幂和最高次幂的系数O(1)int n;...原创 2019-08-04 22:44:13 · 129 阅读 · 0 评论 -
基础数据结构和算法:链表
顺序表的缺点1.添加和删除操作需要移动元素2.当数据量特别大的情况,可能没有连续的累出你可使用链表:通过指针方式建立元素之间前后链接关系定义操作1.创建链表bool linklist_init(LinkList* plist);2.添加元素bool linklist_append(LinkList* plist,LinkType value);bool link...原创 2019-08-06 17:58:01 · 101 阅读 · 0 评论