以 ascending/descending 顺序对文本文件中的数据进行排序的算法 C#
Algorithms to sort data from text files in ascending/descending order C#
好吧,让我试着解释一下我坚持的是什么以及我想做什么!我有多个 .txt 文件,里面都有大量数据(一个有星期几,另一个有日期,其他有其他与股票有关的数据)都是按降序排列的(所以所有的第一部分一个 .txt 文件的数据匹配另一个 .txt 文件中的第一条数据)。
我试图让我的代码读取文本文件的所有行(使用 File.ReadAllLines),将读取的数据放入一个大数组(如果可能),以便如果用户请求查看所有"Wednesday" 上的数据或 1999 年 1 月 3 日至 1999 年 3 月 31 日文本文件中的所有数据以及要在命令行上显示的数据(我添加了 table - 只是 运行 代码,你会明白我的意思)用户必须能够按天或日期搜索,并且需要能够使用算法将其排序为升序和降序,在我的脑海中,我知道我需要做的,但困难在于实现,我已经尝试了 Array.List()、Array.Sort()、快速排序(根本没用)等等经过 3 小时的反复试验后忘记了。
我对此还是很陌生,尤其是在算法方面,但希望我已经对其进行了解释,因此它至少是可以理解的,但足够开放,可以帮助其他人。如果没有任何意义,请提出问题,我会回答它们,我可能在写这篇文章时感到困惑 :P) 在此先感谢!
<!-- Run this code to see the table -->
<table style="width:100%">
<tr>
<td>Date</td>
<td>Day</td>
<td>Open</td>
<td>Close</td>
<td>Difference</td>
<td>Volume</td>
</tr>
<tr>
<td>01/03/1999</td>
<td>Monday</td>
<td>312</td>
<td>320</td>
<td>...</td>
<td>...</td>
</tr>
<tr>
<td>10/03/1999</td>
<td>Wednesday</td>
<td>301</td>
<td>289</td>
<td>...</td>
<td>...</td>
</tr>
<tr>
<td>19/03/1999/</td>
<td>Friday</td>
<td>365</td>
<td>342</td>
<td>...</td>
<td>...</td>
</tr>
</table>
您 不需要 编写或实施任何排序算法来执行此操作,这是将数据解析为对象形式的问题。
File.ReadAllLines 只是将文件的每一行转储到一个数组中,仅靠它本身不足以将数据组织成有意义的方式。您需要解析 HTML 以将文件反序列化为对象列表。
这将为您指明解析 HTML 的正确方向:What is the best way to parse html in C#?
您需要为每个数据字段创建 class 和 属性。
将文件转换为对象并验证数据包含在对象中后,您应该拥有这些项目的列表或数组。然后,您可以使用 LINQ 扩展方法 OrderBy 对数据进行排序。
好吧,让我试着解释一下我坚持的是什么以及我想做什么!我有多个 .txt 文件,里面都有大量数据(一个有星期几,另一个有日期,其他有其他与股票有关的数据)都是按降序排列的(所以所有的第一部分一个 .txt 文件的数据匹配另一个 .txt 文件中的第一条数据)。
我试图让我的代码读取文本文件的所有行(使用 File.ReadAllLines),将读取的数据放入一个大数组(如果可能),以便如果用户请求查看所有"Wednesday" 上的数据或 1999 年 1 月 3 日至 1999 年 3 月 31 日文本文件中的所有数据以及要在命令行上显示的数据(我添加了 table - 只是 运行 代码,你会明白我的意思)用户必须能够按天或日期搜索,并且需要能够使用算法将其排序为升序和降序,在我的脑海中,我知道我需要做的,但困难在于实现,我已经尝试了 Array.List()、Array.Sort()、快速排序(根本没用)等等经过 3 小时的反复试验后忘记了。
我对此还是很陌生,尤其是在算法方面,但希望我已经对其进行了解释,因此它至少是可以理解的,但足够开放,可以帮助其他人。如果没有任何意义,请提出问题,我会回答它们,我可能在写这篇文章时感到困惑 :P) 在此先感谢!
<!-- Run this code to see the table -->
<table style="width:100%">
<tr>
<td>Date</td>
<td>Day</td>
<td>Open</td>
<td>Close</td>
<td>Difference</td>
<td>Volume</td>
</tr>
<tr>
<td>01/03/1999</td>
<td>Monday</td>
<td>312</td>
<td>320</td>
<td>...</td>
<td>...</td>
</tr>
<tr>
<td>10/03/1999</td>
<td>Wednesday</td>
<td>301</td>
<td>289</td>
<td>...</td>
<td>...</td>
</tr>
<tr>
<td>19/03/1999/</td>
<td>Friday</td>
<td>365</td>
<td>342</td>
<td>...</td>
<td>...</td>
</tr>
</table>
您 不需要 编写或实施任何排序算法来执行此操作,这是将数据解析为对象形式的问题。
File.ReadAllLines 只是将文件的每一行转储到一个数组中,仅靠它本身不足以将数据组织成有意义的方式。您需要解析 HTML 以将文件反序列化为对象列表。
这将为您指明解析 HTML 的正确方向:What is the best way to parse html in C#?
您需要为每个数据字段创建 class 和 属性。
将文件转换为对象并验证数据包含在对象中后,您应该拥有这些项目的列表或数组。然后,您可以使用 LINQ 扩展方法 OrderBy 对数据进行排序。