平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“C#中Array.Sort与Reverse实现方法数组降序技巧整理”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。
一、Array.Sort()
基础规则
- 默认排序规则
- 数字数组:数值从小到大升序
- char 字符数组:按照 ASCII 码从小到大排序
- 字符串数组:按照字典顺序升序
- 语法示例
int[] nums = { 5, 1, 9, 3 };
Array.Sort(nums);
Console.WriteLine(string.Join(",", nums)); // 输出:1,3,5,9(纯升序)
- 单独采用
Sort永远只会得到升序,出不来降序。
字符数组用法(你之前代码用到的)
char[] ch = { 'd','a','c','b' };
Array.Sort(ch);
// 结果:a b c d
二、Array.Reverse()
核心本质:只翻转现有元素的位置,不判断大小、不排序
示例 1:普通数组翻转
int[] arr = {1,3,5,9};
Array.Reverse(arr);
// 原数组升序 → 翻转后:9,5,3,1 (看起来是降序,是巧合)
示例 2:无序数组直接 Reverse,不会变成降序
int[] arr = {5,1,9,3};
Array.Reverse(arr);
// 原数组:5,1,9,3
// 翻转后:3,9,1,5
// 依旧是乱序!并不是从大到小排列
只有数组本身已经是升序的时候,Reverse 翻转才会呈现降序效果。
重载:局部区间反转
// Array.Reverse(数组, 起始索引, 反转元素个数)
int[] arr = {10,20,30,40,50};
Array.Reverse(arr,1,3);
// 只翻转 20、30、40 三个元素 → 结果:10,40,30,20,50
三、二者搭配采用(实现降序的标准写法)
1.数字数组降序
int[] nums = {5,1,9,3};
Array.Sort(nums); // 第一步:升序 → [1,3,5,9]
Array.Reverse(nums); // 第二步:翻转 → [9,5,3,1] 真正降序
2.字符串字符降序排序
string str = "dcba";
char[] chars = str.ToCharArray();
Array.Sort(chars); // 升序 a b c d
Array.Reverse(chars); // 翻转 d c b a
string res = new string(chars);
从实现思路看,总的来说,C# Array.Sort 数组降序适合结合实际项目边做边理解。先抓住核心思路,再逐步补上细节和边界处理,最后效果会更稳定,也更容易复用。