根据C ++

时间:2015-06-22 07:35:19

标签: c++ sorting csv

根据用户输入

,我被赋予了对csv文件进行排序的任务

数据如下所示:

California,USA,65,76,65,67
Paris,France,78,65,97,87
Tokyo,Japan,56,78,67,87
New York,USA,54,65,67,44,67

或者基本上该列代表

City,Country,q1 average temperature, q2 average temperature, q3 , q4

我的任务是根据列对其进行排序:城市为第1列,国家/地区第2列,依此类推......取决于用户输入。

因此,如果用户输入为1dec,则意味着它将按第1列排序(在这种情况下按字母顺序)并打印排序数据

对于上面的示例,它将打印为:

Tokyo,Japan,56,78,67,87
Paris,France,78,65,97,87
New York,USA,65,67,67,44,67
California,USA,65,76,65,67

用户还可以输入多个输入,例如2asc,3dec,4dec这意味着,第2列将是第一个按升序排序的,如果它们在该列中有相似的数据,则第3列将使用显示它们按降序排列,然后如果它仍然相同使用第4列。

对于上面的示例,如果使用2asc,3dec,4dec调用它将打印为:

Paris,France,78,65,97,87
Tokyo,Japan,56,78,67,87
California,USA,65,76,65,67
New York,USA,65,67,67,44,67

我的问题是,我该如何解决这个问题? 我应该使用什么样的最佳数据结构?

PS。不是真的要求代码示例,但我只是想要一些提示 或者如果你会遇到这种问题的方法

2 个答案:

答案 0 :(得分:1)

这是一种你可以使用的方法,希望你能直观地找到它

  1. 读取数据并将其放入未分类的向量中,其中包含表示真实世界数据的对象(类)。
  2. 解析用户输入以确定列和排序顺序
  3. 使用简单的排序算法(如选择排序)将数据添加到已排序的向量中。
  4. 遍历已排序的向量并输出结果。

答案 1 :(得分:0)

  

我的问题是,我该如何解决这个问题?哪个最好   我应该使用数据结构吗?

您应该使用多种数据结构,但如果您使用向量来存储输入列表(如果它非常大),您最好使用保留方法,这样您就可以避免多次重新分配矢量。

另一个有趣的观点是以相反的顺序重复应用排序条件,这样您就可以轻松地按照多个条件对输出进行排序。

如果你值得表现,你应该采用更复杂的方法。