数据结构
文章平均质量分 51
2301_79908467
这个作者很懒,什么都没留下…
展开
-
归并排序和快速排序
一般Partition算法的缺点就是当重复元素较多时,会导致分区不均匀,如果使用3-wayPartition算法,就能够减小子问题的规模,提高算法的效率。应用:1)快速排序,2)线性时间找第k小,3)求众数问题这里犯了一个错误,就是后置++和解引用符的优先级,*p++是先执行p++,再解引用,这时会导致p指针移向下一个位置,不是指向原来那个变量。不做过多解释。原创 2023-12-16 15:59:50 · 381 阅读 · 1 评论 -
分治,利用递归的方法
我们先将n-1个圆盘通过第三个柱子移动到第二个柱子上,再将最后一个圆盘移动到柱子三,再将n-1个柱子通过柱子一移动到柱子三,这样就实现了圆盘的移动。具体的说,就是将最大的那个圆盘移动到第三个柱子上,然后倒数第二大,倒数第三大......直到全部移动到第三个柱子上。这里分析一下,是否满足分治策略的条件:1)规模小到一定程度就可以很容易的解决,即第一个柱子上只有一个圆盘的时候。3)利用该问题分解出的子问题的解可以合并成这个问题的解,在递归过程中实现了子问题解的合并,因此也是可行的。原创 2023-12-14 22:41:21 · 348 阅读 · 1 评论 -
动态创建一维数组、二维数组
我们知道二位数组名是一个二级指针常量,即行指针,二维数组在内存中是开辟了一块连续空间。定义一个二维数组,a是数组名,a[i]是一个列指针,可以引用a[i][0]到a[i][n-1]的元素。原创 2023-11-13 21:12:07 · 234 阅读 · 0 评论 -
使用C语言建立一棵二叉树,并实现先序遍历、删除、复制等操作
下面就是相关代码:因为二叉树的递归定义,因此我们也可以利用递归函数建立一棵二叉树,但是需要注意到的是,函数传递的参数,到底是传一级指针还是二级指针,看你要对它的操作而定。具体来说,如果你要修改指针的指向就要传二级指针,如果仅仅是遍历等操作,不对实参做操作,传一级指针就行。原创 2023-12-26 22:28:10 · 501 阅读 · 1 评论 -
哈夫曼编码与解码
/最长编码长度char data;//字符int freq;//频率}Huffman;//哈夫曼节点char* code;//编码}Huf_Node;//哈夫曼树根节点//字符频率表int size;//字符个数#endif。原创 2024-07-19 23:01:38 · 647 阅读 · 0 评论