在C ++中从文本文件中排序整数

时间:2012-09-11 06:17:43

标签: c++ sorting

是的,所以我设法让我的程序连接我的两个文本文件,我现在需要对创建的文本文件进行排序,使它们按数字顺序显示。例如,说Test1.txt包含数字1,2,3,4,5,Test2包含数字4,5,6,8,myoutput.txt应该包含1,2,3,4,4,5,5, 6,8。我并不熟悉排序算法。我猜测我必须读取输出文件,对它们进行排序并再次写入输出文件。

这是我目前的代码:

#include <iostream>
#include <fstream>
#include <ostream>

using namespace std;

int main()
{
    //collecting integers from first text file//
   ifstream file1("test1.txt", ios::in | ios::binary);
   if(!file1)
   {
      cout << "Cannot open input test file 1.\n";
      return 1;
   }

   // collecting integers from second text file//
   ifstream file2("test2.txt", ios::in | ios::binary);
   if(!file2)
   {
      cout << "Cannot open input test file 2.\n";
      return 1;
   }

   //outputting the concactonated file to myoutput.txt//

   ofstream cout("myoutput.txt", ios::out | ios::binary);

   if(!cout)
   {
      cout << "can't open output file ";
      return 1;
   }

   cout << file1.rdbuf();
   cout << " " << flush;
   cout << file2.rdbuf();

   ifstream sortfile("myoutput.txt, )

   return 0;
}

3 个答案:

答案 0 :(得分:6)

将单个数字读入整数,将它们推入std::vector,然后使用std::sort对它们进行排序,然后将它们写入输出文件。这些步骤中的每一步都是微不足道的,并且已经涵盖了大量的SO问题。

答案 1 :(得分:2)

您应该对类似文件的排序数组使用合并排序。 看看这个http://www.personal.kent.edu/~rmuhamma/Algorithms/MyAlgorithms/Sorting/mergeSort.htm的合并排序算法。 以及此处的示例源代码 http://www.c.happycodings.com/Beginners_Lab_Assignments/code27.html

答案 2 :(得分:1)

我认为更好的tp在这种情况下使用合并排序。从两个文件中读取一个数字来比较它们并将最小的数字插入到输出文件中。通过这种方法,我认为时间复杂性会更少。