C#实现字母数组正序、逆序排列及随机输出的技术咨询
问题:实现字母数组的正序、逆序及随机排列输出
需求是生成字母数组,分别按正序、逆序横向输出,同时输出随机排列的字母序列,但现有代码无法实现随机输出功能。
原代码存在的问题
- 随机逻辑仅调用
randAlphabet.Next(),没有对数组进行实际打乱操作 - 多处冗余的
for (int i = 0; i < 1; i++)循环完全没必要,直接输出拼接后的字符串即可 - 随机部分的代码未完成(缺少闭合的大括号)
修正后的完整代码
namespace Practice69 { class Program { static void Main(string[] args) { string[] alphabet = new string[] { "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "a", "s", "d", "f", "g", "h", "j", "k", "l", "z", "x", "c", "v", "b", "n", "m" }; // 正序输出 Array.Sort(alphabet); Console.WriteLine(string.Join(" ", alphabet)); // 逆序输出 Array.Reverse(alphabet); Console.WriteLine(string.Join(" ", alphabet)); // 随机排列输出(使用Fisher-Yates洗牌算法) Random rand = new Random(); int n = alphabet.Length; while (n > 1) { n--; int k = rand.Next(n + 1); string temp = alphabet[k]; alphabet[k] = alphabet[n]; alphabet[n] = temp; } Console.WriteLine(string.Join(" ", alphabet)); } } }
关键修改说明
- 移除冗余循环:正序和逆序输出时直接用
string.Join拼接数组后打印,不需要多余的单次循环 - 实现真正的随机打乱:采用Fisher-Yates洗牌算法,通过遍历数组并交换随机位置的元素完成打乱,这是高效且公平的数组随机排序方案
- 补全代码结构:原代码随机部分缺少闭合的大括号,修正后保证代码可正常编译运行
内容的提问来源于stack exchange,提问作者Lane
相关产品推荐
相关产品推荐

