如何在 C# 数组中查找和显示特定值
Posted
技术标签:
【中文标题】如何在 C# 数组中查找和显示特定值【英文标题】:How to find and display a specific value in a C# array 【发布时间】:2021-07-19 21:02:51 【问题描述】:我用 C# 编写了一个程序,它读取一个数字文件,将它们转换为一个数组,并使用冒泡排序以数字顺序显示它们,我正在尝试在程序打印数组后让它在冒泡排序之后找到并打印数组中的第 10 个值我是 C# 新手,通过谷歌搜索找不到任何内容,想知道是否有简单的方法可以做到这一点。
下面是我的代码中进行排序和输出的部分。
public void Bubble()
string[] road1 = System.IO.File.ReadAllLines(@"C:\Users\legom\OneDrive\Documents\Road_1_256.txt");
int[] a = Array.ConvertAll(road1, int.Parse);
int t;
for (int p = 0; p <= a.Length - 2; p++)
for (int i = 0; i <= a.Length - 2; i++)
if (a[i] > a[i + 1])
t = a[i + 1];
a[i + 1] = a[i];
a[i] = t;
foreach (int aa in a)
Console.Write(aa + " "); public void Bubble()
string[] road1 = System.IO.File.ReadAllLines(@"C:\Users\legom\OneDrive\Documents\Algorithams assignment\Road_1_256.txt");
int[] a = Array.ConvertAll(road1, int.Parse);
int t;
for (int p = 0; p <= a.Length - 2; p++)
for (int i = 0; i <= a.Length - 2; i++)
if (a[i] > a[i + 1])
t = a[i + 1];
a[i + 1] = a[i];
a[i] = t;
foreach (int aa in a)
Console.Write(aa + " ");
【问题讨论】:
您“编写了一个程序”对数组进行排序,但无法编写代码来提取特定元素(这是对数组排序的必要部分)? 您的代码无法编译。 我投票结束这个问题,因为它是另一个你能帮我解决我的作业吗。 给出一个数组a
和一个int索引i
,描述a[i]
做了什么。
提示:地址i
你使用a[i]
的第一个项目,所以地址10
-你应该放的项目...
【参考方案1】:
如果执行速度不是非常重要,您可以使用 LINQ 为您完成大部分工作:
using System.LINQ;
...
var array = yourArrayHere;
int elementIndex = 9;
var tenthElementAfterSorting = array.OrderBy(e => e).ElementAt(elementIndex);
如果您想使用不同的排序标准,您可以在 OrderBy() 中添加其他内容。此外,OrderBy() 是一种稳定排序,这意味着如果两个项目具有相同的排序标准,则它们的原始相对排序将被保留。如果没有这种排序稳定性,获取第 N 个元素可能会在不同调用之间意外返回不同的结果。
另外值得注意的是 OrderBy() 使用了一种稳定的 QuickSort 形式,它比 BubbleSort 快很多。
【讨论】:
Without this sorting stability, getting the Nth element may return different results between different calls unexpectedly.
在整数的上下文中,这是一个有争议的问题。
是的,在这种带有文件名的特殊情况下,您不应该有两个同名文件。但我建议选择更改排序标准,所以觉得值得一提,因为排序标准可能会更改为排序稳定性可能是一个因素的东西。以上是关于如何在 C# 数组中查找和显示特定值的主要内容,如果未能解决你的问题,请参考以下文章