自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 哈夫曼树(Huffman Tree) c语言实现

哈夫曼树(Huffman Tree)是一种用于压缩数据的数据结构。哈夫曼树是一种二叉树,它的每个节点都有一个权重,表示该节点在编码中出现的频率。

2024-03-27 16:36:15 445

原创 字典-c语言简单实现

优化建议:使用指针指向动态内存的方式存储键和值,为值提供比较回调函数,使用键和值时需将动态内存中的数据转化为相应类型。优化建议:按键值对键值对进行排序,使用二分查找进行键值对的搜索。或使用红黑树或AVL树存储键值对。我的这段代码简单实现了实现了数据结构的字典,我采用线性表对键值对进行了简单存储。1.没有对键的查找进行优化,当数据量较大时,查找效率非常低。数据结构字典是一种以键值对形式存储数据的数据结构。2.键和值的类型是固定的,代码复用率低。

2024-03-27 15:47:27 474

原创 平衡二叉树的创建、插入和删除操作 C语言实现

当二叉搜索树中的节点按照某种顺序插入,导致树的一边过长,另一边过短时,树就会变得不平衡。不平衡的二叉搜索树在插入、删除和查找操作时,效率会降低,最坏情况下会变成一条线性链表,时间复杂度变为O(n)。为了解决这一问题,和二叉搜索树进行优化,提出了平衡二叉树这一概念平衡二叉树,也称为AVL树或高度平衡的二叉搜索树。在平衡二叉树中,任何一个节点的两个子树的高度差都不超过1,这使得它特别适合用于排序和查找操作。平衡二叉树的节点除了包含值、左子节点和右子节点的指针,还增加了一个高度值。

2024-03-24 18:40:13 1463 1

原创 十大排序算法-基数排序 c语言实现

时间复杂度:O(n+k),其中n为数字的平均位数,k为数字的个数。空间复杂度:O(n*k)。

2024-03-08 10:03:13 201 1

原创 十大排序算法-桶排序 c语言实现

函数bucketSortbase: 整数数组,需要排序的数组。len: 整数,数组的长度。: 整数,桶的数量。桶排序适用于数据分布比较均匀的情况,对于数据分布极端不均匀的情况,可能会导致性能下降。桶排序的时间复杂度为O(n+k),其中n为数组长度,k为桶数量。当桶数量增加时,消耗的内存也会增加。

2024-03-08 09:44:48 330 1

原创 十大排序算法-计数排序 c语言实现

函数接受两个参数:一个整数数组base和一个整数len,表示数组的长度。函数的目的是对数组base进行计数排序,并将排序后的结果存储在原数组base中。计数排序适用于数据范围较小且基本有序的数据排序。在某些情况下,计数排序可以作为其他排序算法的预处理步骤,以提高排序效率。计数排序的时间复杂度为 O(n+k),其中 n 是输入数组的长度,k 是输入数组中的最大值与最小值的差值。空间复杂度为 O(k)。

2024-03-08 09:35:46 216 1

原创 十大排序算法-快速排序 c语言实现

快速排序是一种不稳定排序算法,在某些情况下,可能会产生最坏情况,即时间复杂度为O(n^2)。为了避免这种情况,可以采用随机化的方式选择基准元素,或者使用其他更高效的排序算法。

2024-03-07 16:40:01 519 1

原创 十大排序算法-归并排序 c语言实现

归并排序的时间复杂度为O(n log n),空间复杂度为O(n)。它是一种稳定的排序算法,适用于大规模的数据排序。

2024-03-07 15:55:37 403 1

原创 十大排序算法-堆排序 c语言实现

堆排序算法是一种原地排序算法,不需要额外的存储空间。堆排序算法的时间复杂度为O(nlogn),空间复杂度为O(1)。堆排序算法在处理部分有序的序列时,效率较高。

2024-03-07 13:38:35 1339 1

原创 十大排序算法-希尔排序 C语言实现

十大排序算法-希尔排序 C语言实现

2024-03-06 15:08:58 392 1

原创 十大排序算法-插入排序 c语言实现

base(指向数组的指针),len(数组长度),width(数组中每个元素的大小),以及compare(一个比较函数,用于比较两个元素的大小)。插入排序的时间复杂度为O(n^2)。插入排序在实现上,通常采用in-place排序,不需要额外的存储空间。插入排序的算法简单,容易理解。插入排序适用于数据量较小或者部分已经排序的数组,对于大量数据的排序,插入排序的效率较低。插入排序的时间复杂度为O(n^2),在效率上不如其他高效的排序算法,如快速排序、归并排序等。

2024-03-06 14:39:48 284 1

原创 十大排序算法-选择排序 c语言实现

函数base(指向数组的指针),len(数组长度),width(数组中每个元素的大小),以及compare(一个比较函数,用于比较两个元素的大小)。这个函数可以用于对任意类型的数组进行排序,只需提供相应的比较函数即可。双向选择排序的时间复杂度仍然为 O(n^2),但因为它每次可以同时移动两个元素,所以在某些情况下,它的实际效率可能比普通的插入排序更高。

2024-03-06 13:17:09 225

原创 十大排序算法-冒泡排序 C语言实现

void* base: 指向要排序数组的指针。int len: 数组的长度。int width: 数组中每个元素的大小。: 一个比较函数,用于比较两个元素的大小。冒泡排序的时间复杂度为 O(n^2),空间复杂度为 O(1)。当数据量较大时,冒泡排序的效率较低。

2024-03-05 16:38:27 245

原创 自己封装一个简单动态数组,纯C语言实现

动态数组(也称为可变数组)是一种可以自动增长容量的数组。在某些编程语言中,数组的长度是固定的,如果需要添加新的元素,就需要创建一个新的数组。而在动态数组中,数组的长度可以根据需要自动增长,这样就避免了因数组容量不足而需要重新分配内存的情况。因此在某些情况下,使用静态数组(也称为固定数组)可能会更加高效。静态数组在初始化时确定数组的长度,如果在使用过程中需要添加新的元素,可以通过扩展数组来解决。在实际编程中,应该根据具体需求和资源限制来选择使用动态数组还是静态数组。

2024-03-01 16:42:50 132

c/c++ ColorLinez小游戏 旧版控制台实现

学生作业分享 有具体实现过程

2022-12-20

c/c++ easyx 羊了个羊带第二关源码

200行解决羊了个羊

2022-12-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除