【发布时间】:2016-04-20 15:24:50
【问题描述】:
这是一个快速排序程序,它从文件中读取数字,然后将它们从小到大排序。我需要它能够做到完全相同,但对于带小数的数字。我知道有一些方法可以将 int 转换为 double、decimal 或 float,但我已经尽我所能,但没有任何工作,有人可以告诉我他们将如何更改此代码以使其工作。以下是我尝试的方法:
class quickSort
{
private double[] array = new double[1010];
private int len;
public void QuickSort()
{
sort(0, len - 1);
}
public void sort(double left, double right)
{
double pivot;
double leftend, rightend;
leftend = left;
rightend = right;
pivot = array[left];
while (left < right)
{
while ((array[right] >= pivot) && (left < right))
{
right--;
}
if (left != right)
{
array[left] = array[right];
left++;
}
while ((array[left] <= pivot) && (left < right))
{
left++;
}
if (left != right)
{
array[right] = array[left];
right--;
}
}
array[left] = pivot;
pivot = left;
left = leftend;
right = rightend;
if (left < pivot)
{
sort(left, pivot - 1);
}
if (right > pivot)
{
sort(pivot + 1, right);
}
}
public static void Main()
{
quickSort q_Sort = new quickSort();
string[] years = System.IO.File.ReadAllLines(@"C:\WS1_Rain.txt");
var yearArray = years.Select(item => Convert.ToDouble(item));
double[] array = yearArray.ToArray();
q_Sort.array = array;
q_Sort.len = q_Sort.array.Length;
q_Sort.QuickSort();
for (int j = 0; j < q_Sort.len; j++)
{
Console.WriteLine(q_Sort.array[j]);
}
Console.ReadKey();
}
}
}
【问题讨论】:
-
好吧,您可以先将大部分
ints 更改为double。 -
如何将数字转换为小数?在您的示例中,您将一个 int 解析为一个 IEnumerable 的 ints ...您应该尝试双打
-
向我们展示导致问题的代码。
-
您甚至不能使用可复制粘贴的代码来做到这一点? stackoverflow.com/questions/36733106/…