引言

按照时间复杂度,将一些常见排序算法进行分类,分为以下三类:

  • O(n2)O(n^2):冒泡排序,插入排序,选择排序。

  • O(nlogn)O(nlogn):快速排序,归并排序。

  • O(n)O(n):桶排序,计数排序,基数排序。

本篇文章讨论以下第一类:冒泡排序,插入排序,选择排序。

引言

排序算法是最基础的算法,对于排序算法,除学习算法原理,代码实现之外,更重要的是学习每个算法的特点,知道在什么场景下选择那种算法。

那一定是选择时间复杂度最低的排序算法就是最优的吗?

可以从以下几个方面分析一下。

引言

上文数据结构与算法 --- 递归(一) 讲述了什么是递归算法,如何编写递归算法及如何写好递归算法,本文着重讲述一下如何避免递归过深导致的堆栈溢出问题。

什么是递归?

递归(Recursion) 是一种解决问题的方法,它将问题分解为更小的子问题,并逐层解决这些子问题。递归算法的核心思想是:一个函数可以直接或间接地调用自身。通过这种自我调用,我们可以用简洁的代码来解决复杂问题。

2023-05-03
并发编程
00

引言

现在模拟一个异步方法抛出了异常:

csharp
public static async Task ThrowAfter(int ms, string message) { await Task.Delay(ms); throw new Exception(message); }

思考一下, DontHandle() 方法是否能够捕获到异常?

csharp
public static void DontHandle() { try { ThrowAfter(1000, "first"); } catch (Exception ex) { Console.WriteLine(ex.Message); } }