Skip to content

Shell Sort in C#: .NET 10 and a copy-per-call benchmark - #2370

Merged
vladimir-pecanac-main merged 2 commits into
CodeMazeBlog:mainfrom
vladimir-pecanac-main:seo/71922-shell-sort-csharp
Nov 13, 2026
Merged

vladimir-pecanac-main merged 2 commits into
CodeMazeBlog:mainfrom
vladimir-pecanac-main:seo/71922-shell-sort-csharp

Conversation

@vladimir-pecanac-main

Copy link
Copy Markdown
Collaborator

Moves csharp-algorithms/ShellSort to net10.0 with BenchmarkDotNet 0.15.8, MSTest 4.5.2, Microsoft.NET.Test.Sdk 18.11.0 and coverlet.collector 10.1.0. The benchmark now lives in a ShellSortBenchmarks class that copies the generated array into a working array before every call, because the old benchmark sorted its ArgumentsSource arrays in place and every measured call timed already-sorted data. The sizes are powers of two (4,096, 16,384 and 65,536) so the imbalanced input is a real worst case for Shell's gaps. ShellSort() drops the unused arrayName parameter, Program.cs passes args to BenchmarkRunner, the tests use file-scoped namespaces and (expected, actual) order, and two tests are added: an empty array and generated arrays checked against Array.Sort.

Both projects target net10.0 with BenchmarkDotNet 0.15.8 and MSTest 4.5.2. The benchmark moves into its own ShellSortBenchmarks class that copies the generated array before every sort, so each call measures unsorted input instead of the array the first call already sorted. ShellSort() drops the unused arrayName parameter, Program.cs passes args to BenchmarkRunner, and the tests use (expected, actual) order with two new cases.
@vladimir-pecanac-main
vladimir-pecanac-main merged commit feaaa77 into CodeMazeBlog:main Nov 13, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant