C# 尝试使用插入排序c对文件排序#

C# 尝试使用插入排序c对文件排序#,c#,arrays,sorting,C#,Arrays,Sorting,我正在尝试用c#对一个文件进行排序,该文件有字符串(在没有字符串的列表中,一周中的不同日期)。正常数组上的排序工作得到了一个示例 string[] array = { "Monday", "Thursday", "Monday", "Wednesday", "Friday", "Tuesday", "Friday", "Tuesday", "Thursday", "Wednesday" }; 当执行排序算法时-按顺序输出日期:星期一星期五星期四星期三。但是,当我将数组更改为文件数组(如下代码所

我正在尝试用c#对一个文件进行排序,该文件有字符串(在没有字符串的列表中,一周中的不同日期)。正常数组上的排序工作得到了一个示例

string[] array = { "Monday", "Thursday", "Monday", "Wednesday", "Friday", "Tuesday", "Friday", "Tuesday", "Thursday", "Wednesday" };
当执行排序算法时-按顺序输出日期:星期一星期五星期四星期三。但是,当我将数组更改为文件数组(如下代码所示)时,它没有排序。我对c#编程相当陌生。我试图使文件输出与上面的一样

为了我自己的测试目的,我保留了代码中的一些片段,因此我很抱歉造成混淆。发生的情况是:

一些未显示的代码只是:用户输入一个介于1-10之间的值,这称为userFileInput

我将非常感激任何帮助。谢谢

代码:

string[]value=MethodA();
//Console.WriteLine(值[1]);
字符串[]数组={value[userFileInput-1]}//userFileInput是用户对文件的选择
//string[]数组={“星期一”、“星期四”、“星期一”、“星期三”、“星期五”、“星期二”、“星期五”、“星期二”、“星期四”、“星期三”};
插入排序(数组);
for(int x=0;x=0)和&(数组[j].CompareTo(value)>0))
{
数组[j+1]=数组[j];
j=j-1;
}
数组[j+1]=值;
} 
}  

我认为问题在于,在数组中,您会保留这样的想法

string array = new[] { "Monday Saturday Monday", "Wednesday Thursday Monday" , ... };
string array = new[] { "Monday", "Saturday", "Monday", "Wednesday", "Thursday" , "Monday" , ... };
// rest of the code
string[][] value = MethodA(); // notice string[][]
string[] array = value[userFileInput - 1]; //userFileInput is the users choice of file
InsertSort(array);
//rest of the code
应该是这样的

string array = new[] { "Monday Saturday Monday", "Wednesday Thursday Monday" , ... };
string array = new[] { "Monday", "Saturday", "Monday", "Wednesday", "Thursday" , "Monday" , ... };
// rest of the code
string[][] value = MethodA(); // notice string[][]
string[] array = value[userFileInput - 1]; //userFileInput is the users choice of file
InsertSort(array);
//rest of the code
要生成这种数组,可以遍历文件中的所有行,并将其添加到列表中

public List<string> ReadAllLines(StreamReader sr)
{
    List<string> allLines = new List<string>();
    string line; 
    while ((line = sr.ReadLine()) != null) 
    {
        allLines.Add(line);
    }
    return allLines;
}
您将这一行与我们创建的方法一起使用,该方法将从文件中返回分隔的行

List<string> dayString = ReadAllLines(dayFile);
// to the same with the rest of the files
你这样用这个

string array = new[] { "Monday Saturday Monday", "Wednesday Thursday Monday" , ... };
string array = new[] { "Monday", "Saturday", "Monday", "Wednesday", "Thursday" , "Monday" , ... };
// rest of the code
string[][] value = MethodA(); // notice string[][]
string[] array = value[userFileInput - 1]; //userFileInput is the users choice of file
InsertSort(array);
//rest of the code

文件包含哪些内容?其中一些文件包含日期列表,一些日期,一些数字,如75.350 74.430如果文件包含重复的日期或星期几,您不应该期望排序算法“删除”这些重复条目。排序和分组是两种不同的过程。要排序的数组包含每个文件的内容。如果您想在文件中获取行,请使用
shXVolumn.ReadAllLines()
,它返回字符串数组,然后将所有这些数组合并为一个。我原以为文件会被读入,那么排序算法应该对它们进行排序/分组?感谢您的回复,但我不确定我是否正确复制/写入了所有内容。我应该更改'string[]数组={value[userFileinput-1]};'去别的地方?