摘要:
## 引言 上文[数据结构与算法 递归(一)](https://niuery.com/post/51) 讲述了什么是递归算法,如何编写递归算法及如何写好递归算法,本文着重讲述一下如何避免递归过深导致的堆栈溢出问题。 ## 探究产生堆栈溢出的原因 函数调用采用**函数调用栈**来保存当前“快照”(局部 阅读全文
posted @ 2023-08-13 18:28
NiueryDiary
阅读(35)
评论(0)
推荐(0)
摘要:
## 什么是递归? **递归(Recursion)** 是一种解决问题的方法,它将问题分解为更小的子问题,并逐层解决这些子问题。递归算法的核心思想是:**一个函数可以直接或间接地调用自身**。通过这种自我调用,我们可以用简洁的代码来解决复杂问题。 ## 满足递归的条件 一般来说,满足下面三个条件就可 阅读全文
posted @ 2023-08-13 18:27
NiueryDiary
阅读(325)
评论(0)
推荐(0)
摘要:
## 引言 深拷贝是指创建一个新对象,该对象的值与原始对象完全相同,但在内存中具有不同的地址。这意味着如果您对原始对象进行更改,则不会影响到复制的对象 常见的C#常见的深拷贝方式有以下4类: 1. 各种形式的序列化及反序列化。 2. 通过反射机制获取该对象的所有字段和属性信息。遍历所有字段和属性,递 阅读全文
posted @ 2023-08-13 18:27
NiueryDiary
阅读(1195)
评论(0)
推荐(2)
摘要:
## 引言 哨兵思想是指在算法中使用一个特殊值来检测或标记某些条件的发生,它的目的是为了简化代码,并使其更容易理解,常常用于在循环中优化边界条件的判断。 ## 介绍 在算法中,"哨兵"思想是指在循环中设置一个特殊的元素(称为哨兵),以便在循环过程中能够更高效地处理某些边界情况或结束条件。 这种思想可 阅读全文
posted @ 2023-08-13 18:26
NiueryDiary
阅读(538)
评论(0)
推荐(0)
摘要:
继[数据结构与算法 组数、链表、栈和队列(一)](https://niuery.com/post/41)讲解完数组,链表及算法的优化策略之后,接下来继续讲解**两种特殊的线性表结构,栈和队列**。 ## 栈 对“栈”有一个很形象的比喻,栈就像一摞叠在一起的盘子,放盘子时,只能放在上面,不能将盘子插入 阅读全文
posted @ 2023-08-13 18:25
NiueryDiary
阅读(71)
评论(0)
推荐(0)
摘要:
数组、链表、栈和队列是四种基础数据结构,他们是高级、复杂的数据结构和算法的基础。本篇先来讲述**数组,链表,及算法的优化策略**。 ### 数组 #### 定义 **数组:数组是一种线性表数据结构,它用一组连续的内存空间存储一组具有相同类型的数据。** 定义中有三个关键词: - **线性表** - 阅读全文
posted @ 2023-08-13 18:25
NiueryDiary
阅读(110)
评论(0)
推荐(0)
摘要:
title: 数据结构与算法 复杂度分析专题(二) category: 数据结构与算法 tags: 算法 updatedAt: 2023-05-13T12:54:18.943Z createdAt: 2023-04-09T13:52:05.115Z ## 引言 在上一篇[复杂度分析专题(一)](ht 阅读全文
posted @ 2023-08-13 18:24
NiueryDiary
阅读(35)
评论(0)
推荐(0)
摘要:
## 意义 算法复杂度分析的意义在于评估算法的执行效率,找出最优解决方案,是优化算法和改进程序性能的基础。通过对算法的时间复杂度和空间复杂度进行分析,可以帮助我们预估该算法运行所需的资源,从而提高程序的性能。 ## 大O复杂度表示法 ### 例1 有如下代码 ```csharp 1 public i 阅读全文
posted @ 2023-08-13 18:24
NiueryDiary
阅读(258)
评论(0)
推荐(0)
摘要:
# 开场白 算法介绍从一个简单加法开始,现要求写一个求1+2+3+..+100的结果的程序,那我可以这样写: ```csharp int count = 100; int sum = 0; for (int i =1; i 这就是最简单的程序之一,这就是算法。但是它是最优的吗?是最高效的吗? 儿时数 阅读全文
posted @ 2023-08-13 18:23
NiueryDiary
阅读(128)
评论(0)
推荐(0)

浙公网安备 33010602011771号