2023-05-20
工具
00

介绍

今天介绍一个非常强大的基于.Net 的基准测试工具BenchmarkDotNet

BenchmarkDotNet 已经被14300多个项目采用,包括非常多的知名开源项目,例如

  • dotnet/performance(.Net所有运行时的基准测试项目)
  • dotnet/runtime(.Net 运行时库),
  • Roslyn (c#和Visual Basic编译器),
  • Mono、 ASP.NET Core、 ML.NET、 Entity Framework Core、 PowerShell SignalR、 f#、 Orleans, Newtonsoft.Json、Elasticsearch.Net、Dapper等诸多知名开源项目。

引言

上一篇数据结构与算法 --- 排序算法(一)中,学习了冒泡排序,插入排序,选择排序这三种时间复杂度为 O(n2)O(n^2) 的算法。实时上 O(n2)O(n^2) 时间复杂度是非常高的,所以一般只适合小规模数据排序,那接下来,就在看一看时间复杂度为 O(nlog)O(nlog) 的算法:归并排序和快速排序。

2023-05-11
工具
00

灵感

最近在做配置模块,然后整个配置的参数是非常多的,层级结构也很深。可能有几百个参数,三、四层的层级关系,想要捋顺所有的类和参数,太繁琐了,而且 Visual Studio 的类视图只能看到属性,却看不出层级关系来,所以花费些许精力,写一个控制台小程序,展示类结构。

引言

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

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

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

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

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

引言

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

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

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