-
Notifications
You must be signed in to change notification settings - Fork 0
BrezhnevSort Reference
github-actions[bot] edited this page Jun 5, 2026
·
1 revision
导航: Home | Getting Started | Algorithm Overview
说明:本页是参考文档,不是公开行为契约来源;如有冲突,以 StrangeSort 项目开发规范 为准。
BrezhnevSort 不是传统排序。它不会比较、筛选或重排输入元素,而是只根据输入长度生成一个固定结果:
- 输入长度为
n - 输出内容固定为从
1到n的序数序列 - 输入元素原有的值不会被读取,也不会影响输出结果
因此,两个长度相同但内容完全不同的输入,会得到相同的输出。
例如:
- 输入:
[999, -3, 42] - 输出:
[1, 2, 3]
public static T[] RewriteAsOrdinalSequence<T>(T[] values)
where T : INumber<T>
public static void RewriteAsOrdinalSequence<T>(List<T> values)
where T : INumber<T>数组重载:
- 输入:
T[] values - 类型约束:
T : INumber<T> - 输出:
T[] - 行为:不修改输入数组,返回一个新的结果数组
- 特别说明:
- 返回数组长度与输入数组一致
- 返回内容固定为
1..n - 输入数组中的原始值不会影响结果
- 即使输入本身已经是
1..n,也仍然返回新数组而不是原数组引用
List<T> 重载:
- 输入:
List<T> values - 类型约束:
T : INumber<T> - 输出:无返回值,结果直接写回原列表
- 行为:原地把整个列表改写为
1..n - 特别说明:
- 空列表保持为空
- 原列表中的原始值不会影响结果
所有重载都可能出现:
-
ArgumentNullExceptionvalues == null
所有重载都还可能出现:
-
OverflowException- 当输入长度超出
T可表示范围时抛出 - 例如对
byte来说,长度达到256就无法表示
- 当输入长度超出
数组重载异常特征:
- 如果抛出异常,输入数组不会被修改
List<T> 重载异常特征:
- 如果在改写途中因数值转换溢出抛出异常,列表可能已经被部分修改
- 该修改不会回滚
var values = new[] { 999, -3, 42, 0 };
var result = BrezhnevSorter.RewriteAsOrdinalSequence(values);
// result = [1, 2, 3, 4]
// values 保持不变
var list = new List<int> { 100, -5, 8 };
BrezhnevSorter.RewriteAsOrdinalSequence(list);
// list = [1, 2, 3]导航: Home | Getting Started | Algorithm Overview