排序后遍历数组时,如何在C#中拆分输出?
我有以下情况: 首先,我输入要插入数组的数据量。 在这之后,我在每一行上插入两个值(使用排序后遍历数组时,如何在C#中拆分输出?,c#,arrays,sorting,for-loop,insertion-sort,C#,Arrays,Sorting,For Loop,Insertion Sort,我有以下情况: 首先,我输入要插入数组的数据量。 在这之后,我在每一行上插入两个值(使用Split()),它们之间有一个空格)到一个数组中,这些值一起构成一个分数。 下面是代码: int amount = Int32.Parse(Console.ReadLine()); double[] data = new double[amount]; for (int x = 0; x < amount; x++) { string[] spaces = Console.ReadLine()
Split()
),它们之间有一个空格)到一个数组中,这些值一起构成一个分数。
下面是代码:
int amount = Int32.Parse(Console.ReadLine());
double[] data = new double[amount];
for (int x = 0; x < amount; x++)
{
string[] spaces = Console.ReadLine().Split();
data[x] = Double.Parse(spaces[0]) / Double.Parse(spaces[1]);
}
然后它将创建分数1/2和2/2,等于0.5和1
插入这些值后,for循环将对其进行排序,使其以非降序排列。这是代码的一部分:
for (int i = 1; i < data.Length; i++)
{
value = data[i];
j = i - 1;
while (j >= 0 && data[j] > value)
{
data[j + 1] = data[j];
j--;
}
data[j + 1] = value;
}
我将获得以下输出:
1 3
1 2
2 2
而不是分数so0.333
,0.5
和1
我知道我必须删除
/
运算符,但我不知道还能做什么。当您接收信息时,您正在将分数转换为小数。你需要做的是保留分数,这样你以后就可以把它们写出来。我将从一个结构开始:
class Data
{
double Value { get { return Numerator / Denominator } }
double Numerator { get; set; }
double Denominator { get; set; }
}
然后你可以按.Value
对它们进行排序,当你写出它时,你可以按分子+“”+分母来写出它
在排序中,使用以下值:
value = data[i].Value;
--
while(j >= o && data[j].Value > value)
移动对象保持不变
打印时使用分子和分母
Console.WriteLine(data[y].Numerator + " " + data[y].Denominator);
当你输入信息时,你正在把分数转换成小数。你需要做的是保留分数,这样你以后就可以把它们写出来。我将从一个结构开始:
class Data
{
double Value { get { return Numerator / Denominator } }
double Numerator { get; set; }
double Denominator { get; set; }
}
然后你可以按.Value
对它们进行排序,当你写出它时,你可以按分子+“”+分母来写出它
在排序中,使用以下值:
value = data[i].Value;
--
while(j >= o && data[j].Value > value)
移动对象保持不变
打印时使用分子和分母
Console.WriteLine(data[y].Numerator + " " + data[y].Denominator);
当你输入信息时,你正在把分数转换成小数。你需要做的是保留分数,这样你以后就可以把它们写出来。我将从一个结构开始:
class Data
{
double Value { get { return Numerator / Denominator } }
double Numerator { get; set; }
double Denominator { get; set; }
}
然后你可以按.Value
对它们进行排序,当你写出它时,你可以按分子+“”+分母来写出它
在排序中,使用以下值:
value = data[i].Value;
--
while(j >= o && data[j].Value > value)
移动对象保持不变
打印时使用分子和分母
Console.WriteLine(data[y].Numerator + " " + data[y].Denominator);
当你输入信息时,你正在把分数转换成小数。你需要做的是保留分数,这样你以后就可以把它们写出来。我将从一个结构开始:
class Data
{
double Value { get { return Numerator / Denominator } }
double Numerator { get; set; }
double Denominator { get; set; }
}
然后你可以按.Value
对它们进行排序,当你写出它时,你可以按分子+“”+分母来写出它
在排序中,使用以下值:
value = data[i].Value;
--
while(j >= o && data[j].Value > value)
移动对象保持不变
打印时使用分子和分母
Console.WriteLine(data[y].Numerator + " " + data[y].Denominator);
Kyle W的答案就是你想要的。我只想添加一个细节:
您可以将以下方法添加到数据
类中:
public override string ToString()
{
return String.Format("{0} {1}", Numerator, Denominator);
}
然后,当您打印出数据数组的元素时,您只需执行以下操作:
foreach(var item in data)
{
Console.WriteLine(data);
}
这将自动对数据调用ToString()方法,并提供所需的输出。稍后,您可以将该方法更改为如下所示,而无需更改输出循环:
public override string ToString()
{
return String.Format("{0} {1}. Decimal Value: {2}", Numerator, Denominator, Value);
}
现在,您的输出还显示了值,这表明这是一种非常直观和灵活的方式为您的类进行输出。Kyle W的答案就是您想要的。我只想添加一个细节:
您可以将以下方法添加到数据
类中:
public override string ToString()
{
return String.Format("{0} {1}", Numerator, Denominator);
}
然后,当您打印出数据数组的元素时,您只需执行以下操作:
foreach(var item in data)
{
Console.WriteLine(data);
}
这将自动对数据调用ToString()方法,并提供所需的输出。稍后,您可以将该方法更改为如下所示,而无需更改输出循环:
public override string ToString()
{
return String.Format("{0} {1}. Decimal Value: {2}", Numerator, Denominator, Value);
}
现在,您的输出还显示了值,这表明这是一种非常直观和灵活的方式为您的类进行输出。Kyle W的答案就是您想要的。我只想添加一个细节:
您可以将以下方法添加到数据
类中:
public override string ToString()
{
return String.Format("{0} {1}", Numerator, Denominator);
}
然后,当您打印出数据数组的元素时,您只需执行以下操作:
foreach(var item in data)
{
Console.WriteLine(data);
}
这将自动对数据调用ToString()方法,并提供所需的输出。稍后,您可以将该方法更改为如下所示,而无需更改输出循环:
public override string ToString()
{
return String.Format("{0} {1}. Decimal Value: {2}", Numerator, Denominator, Value);
}
现在,您的输出还显示了值,这表明这是一种非常直观和灵活的方式为您的类进行输出。Kyle W的答案就是您想要的。我只想添加一个细节:
您可以将以下方法添加到数据
类中:
public override string ToString()
{
return String.Format("{0} {1}", Numerator, Denominator);
}
然后,当您打印出数据数组的元素时,您只需执行以下操作:
foreach(var item in data)
{
Console.WriteLine(data);
}
这将自动对数据调用ToString()方法,并提供所需的输出。稍后,您可以将该方法更改为如下所示,而无需更改输出循环:
public override string ToString()
{
return String.Format("{0} {1}. Decimal Value: {2}", Numerator, Denominator, Value);
}
现在,您的输出还显示了值,这表明这是一种非常直观和灵活的方法,可以为您的类执行输出。为什么要执行自己的排序实现?我想试试这个方法,因为这是我学习数据结构基础知识的方法之一,但是排序效果很好,只是输出不是它应该的样子。我很困惑。您想要的输出是什么?(还有,上次我检查时,1/3<1/2,所以你的排序被破坏了。)Sry那是我的错,我在问题中编辑了它,循环正在工作。我想要的输出只是那些我放在控制台中但经过排序的数字,所以从你在问题的输出部分看到的方式来看,你为什么要做自己的排序实现?我想尝试一下,因为这是我学习数据结构基础知识的方法之一,但是排序工作非常完美,只是输出不是它的支持方式