自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 OJ习题之——圆括号编码

第一行是一个整数t(1 <= t <= 10),表示测试数据的组数。每个测试数据的第1行是一个整数n(1 <= n <= 20),第2行是一个圆括号串的P-序列,包含n个正整数,以空格隔开。wn编码,对每一个右圆括号a,从与之匹配的左圆括号开始到a之间的右圆括号的数目用wi表示。(1)用一个整数序列P=p1 p2 …输出t行,对每个测试数据所表示的P-序列,输出对应的W-序列,占一行,包含n个整数。sn是一个规则的圆括号字符串。编程把一个圆括号串S的P-序列转化为W-序列。S为:(((()()())))

2024-03-06 11:25:51 540

原创 排序算法之——外部排序

外部排序:排序过程需要在磁盘等外部存储进行的排序。

2024-02-24 07:39:55 328

原创 排序算法之——归并排序

数据的合并过程不仅仅是将短数据合成长的,否则这仅仅是原来分解数据的逆过程。数据的合并过程中牵扯到对两组数据的排序再合并。假设待排序的数据的容量为n,则完全二叉树的高度为log2(n+1)(向上取整),每一层遍历n个数据,最终用时n。由于每次归并两组数据的过程中都借用了临时数组tmpArray[],且tmpArray[]的长度至少要等于两组数据的元素个数之和,故最终的空间复杂度为O(n)。在将临时数组tmpArray[]中的数据放回原数组array[]的过程中,要特别注意下标问题。归并排序是一种稳定排序。

2024-02-23 20:11:17 732

原创 排序算法之——选择排序

依此类推,总的时间复杂度T(n) = (n-1) + (n-2) + …③在剩余的array[i]–array[n-2](array[i+1]–array[n-1])集合中,重复上述步骤,直到集合剩余1个元素。每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。②若它不是这组元素中的最后一个(第一个)元素,则将它与这组元素中的最后一个(第一个)元素交换;①在元素集合array[i]–array[n-1]中选择关键码最大(小)的数据元素;

2024-02-23 20:10:29 288

原创 排序算法之——快速排序

②图示详解里的排序过程,我们会发现与二叉树前序遍历规则非常像。这也就是为什么说快速排序。

2024-02-22 19:57:09 1733

原创 排序算法之——希尔排序

例如,对于一个10000容量的数据,我们对其进行插入排序,此时用时:10000 * 10000 = 100000000 = 1亿。比如,我们将数据分成100组,每组100个数据,则需要的总时间:100 * 100 * 100 = 1000000 = 一百万。给定一组数据:9,1,2,5,7,4,8,6,3,5。同时多次分组,每一次都会使数据朝着有序的方向趋近。由于插入排序是一种数据越有序效率越高的排序方法,希尔排序分组的方式和多次分组的策略使得其效率大大增加。希尔排序的时间复杂度不好计算,因为。

2024-02-22 19:56:19 481

原创 C语言OJ题——1091装箱问题

(4)3 * 3:该产品也需要自己占用一个箱子,但是由于是6的一半,也就是说4个3 * 3的产品正好可以装满一个整箱子,因此我们可以根据3 * 3的产品数来对4求余,如果余数为0,说明正好是4的倍数,直接除以4就是所需的箱子数,不再有剩余空间。1则可以放27个),同样,余数为2的话,则剩余的空间为18,最多可以放3个2 * 2和6个1 * 1(或者18个1 * 1),最后一种就是余数为3,则剩余空间为9,最多只能放1个2 * 2和5个1 * 1(或者9个1 * 1)。来分析每种型号的产品占用多大的箱子。

2024-02-21 08:00:00 882

原创 排序算法之——直接插入排序

:所以直接插入排序是稳定的还是不稳定的呢?前面已经说明了直接插入排序是稳定的排序。之所以会出现。

2024-02-21 07:00:00 365

原创 C语言习题——3004棋盘上的距离

一道看似简单的题,涉及到了贪心算法。

2024-02-20 15:57:20 1235

原创 数据结构之堆排序

图文详解堆排序,含源码实现。

2024-02-20 15:54:55 338

原创 数据结构OJ题——top-k问题:最小的K个数(Java实现)

top-k问题的图文详解

2024-02-19 13:29:29 549

原创 数据结构之——优先级队列(堆)

详细介绍有关堆的相关知识点,特别是有图文详解。

2024-02-19 13:28:34 1588

原创 数据结构OJ题——二叉树后序遍历非递归实现(Java版)

超详细图解数据结构OJ题——二叉树后序遍历非递归实现(Java版)

2024-01-25 10:32:18 648

原创 数据结构OJ题——二叉树前序、中序遍历非递归实现(Java版)

超详细图解数据结构OJ题——二叉树前序、中序遍历非递归实现(Java版)

2024-01-24 15:19:37 540

原创 数据结构OJ题——翻转二叉树(Java实现)

数据结构OJ题——翻转二叉树(Java实现)

2024-01-05 17:19:14 563 3

原创 二叉树相关oj题——2.另一棵树的子树(Java实现)

数据结构OJ题——另一棵树的子树(Java实现),实现思路及完整代码。

2024-01-05 07:00:00 466 1

原创 二叉树相关oj题——1.检查两棵树是否相同

数据结构OJ题——判断两棵二叉树是否相同的思路以及代码实现

2024-01-04 11:59:25 519 2

原创 树、二叉树概念及相关基本操作的实现(Java版)

详细介绍树及二叉树的概念,代码实现二叉树的相关基本操作。

2024-01-03 15:46:59 1004 1

原创 数据结构习题_用队列实现栈

【代码】数据结构习题_用队列实现栈。

2023-12-19 08:22:42 535 1

原创 后缀表达式(逆波兰表达式)的求值

【代码】后缀表达式(逆波兰表达式)的求值。

2023-12-18 15:07:55 514

原创 中缀表达式转后缀表达式快速解法(非代码实现)

中缀表达式转后缀表达式的一种快速实现方式(非代码)

2023-12-17 16:10:57 244 1

原创 数据结构习题_链表_回文(4)

详细图解链表回文问题

2023-12-09 08:19:15 391 2

原创 数据结构习题_链表_分割链表(2)

全程图示,超级详细解决链表分割问题,让你一看就会。

2023-12-08 08:47:02 182 2

原创 数据结构习题_链表_翻转一个单链表(1)

超详细逐步图解翻转单链表

2023-12-07 20:03:55 189

原创 Java习题——自动装包(1)

Java习题——自动装包(1)

2023-11-25 10:39:24 127 1

原创 Java编程题——合并两个有序数组(1)

Java编程题——合并两个有序数组 (1)Java编程题——合并两个有序数组 (1)

2023-11-22 11:36:06 345 2

原创 Java中接口多态的实现方式以及创建接口实现类的对象的4种方式

Java中接口多态的实现方式以及创建接口实现类的对象的4种方式

2023-11-16 12:00:18 1378 1

原创 Java实现简易图书管理系统

这是一个基本的图书馆里系统,没有涉及对图书的排序、有多本图书同名等等其他复杂情况。后续我会慢慢补充并完善相关功能。BorrowOperation类。DeleteOperation类。ReturnOperation类。SearchOperation类。ExitOperation类。ShowOperation类。AddOperation类。IOperation接口。AdminUser类。NormalUse类。

2023-11-14 16:59:26 935 6

原创 详解结构体内存大小

详解C语言结构体大小的计算和相关应用

2023-10-17 19:02:02 242 2

原创 字符串左旋

C语言编程题“字符串左旋”的实现,两种方式实现。

2023-10-10 17:09:27 135 3

原创 C语言有关动态内存管理的几道经典笔试题

这句操作后,临时变量p被销毁,此时str的值仍是NULL,所以在下一步操作 strcpy(str, “hello world”);中,涉及到对空指针的解引用操作,因此程序崩溃。说明:程序运行结果是打印出了 hello,但是有漏洞,没有对动态开辟的内存进行释放。此外,上述代码的另外一个问题是没有对malloc函数开辟的内存进行回收,造成内存泄漏。也就是说,某个函数非动态开辟的内存空间,在该函数调用结束后,系统会回收其开辟的空间。结果分析:虽然程序最终打印出了world,但是程序本身有错误。

2023-10-03 21:01:59 155 1

原创 C语言动态内存分配相关函数介绍

我们已经掌握的内存开辟方式有:但是上述的开辟空间的方式有两个特点:其中形参size表示的是要动态开辟的内存大小,单位是字节。这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针。如果开辟成功,则返回一个指向开辟好空间的指针。如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查。返回值的类型是 void* ,所以malloc函数并不知道开辟空间的类型,具体在使用的时候使用者自己来决定。如果参数 size 为0,malloc的行为是标准是未定义的,取决于编译器。

2023-10-03 10:27:48 193 1

原创 C语言模拟实现memmove函数

当然,这么做的前提是src指向的内存的地址小于dest指向的内存地址,当src指向的内存的地址大于dest指向的内存地址时,从后往前复制移动依然会出现之前的问题(有兴趣的读者可以仿照上述示意图自己探究下,这里不再赘述)。思考,以上结果实现的前提是,arr2数组和arr1数组指向的内存空间没有重叠的部分,如果有重叠的部分,我们自己实现的函数my_memmove能否满足要求呢?)将其转换为字符型指针。此时,已经将arr1数组中的前3个元素2,4,6替换成了arr2前三个元素1,2,3。dest指向的内存地址,

2023-09-22 14:31:30 355

空空如也

空空如也

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

TA关注的人

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