无法对包含整数的大文件进行分类
Unable to sort a large file containing integers
我的程序应该读取一个大文件包含近100万个整数,并且必须以任何方式对它们进行对处理,我使用一个小型测试文件包含近100个整数,但是当我尝试过它时有了大文件,它没有响应并关闭窗口,这是下面源代码的问题。
void merge(int arr[] , int size , int low , int middle , int high)
{
int temp[size];
for (int i = low; i <= high ; ++i )
{
temp[i] = arr[i];
}
int i = low ;
int j = middle+1 ;
int k = low ;
while (i <= middle && j <= high)
{
if(temp[i] <= temp [j])
{
arr[k] = temp[i];
++i;
}
else
{
arr[k] = temp[j];
++j;
}
++k;
}
while (i <= middle)
{
arr[k] = temp[i];
++k;
++i;
}
}
void mergeSort(int arr[] , int size , int low , int high)
{
if(low < high)
{
int middle = (low + high) / 2;
mergeSort(arr , size , low , middle);
mergeSort(arr , size , middle+1 , high);
merge(arr, size , low , middle , high );
}
}
int main()
{
vector<int> intVector;
string line_;
ifstream file_("int.txt");
while(getline(file_,line_,'t'))
{
int result = atoi(line_.c_str());
intVector.push_back(result);
}
cout << endl;
int numberOfTopItems ;
cout << "plz enter how many big numbers u want " << endl;
cin >> numberOfTopItems ;
const int size = intVector.size();
int* intArray = &intVector[0];
int numberOfLines = intVector.size();
mergeSort(intArray, size, 0 , numberOfLines - 1);
int count = 0;
for (int j = numberOfLines - 1 ; count < numberOfTopItems ; j--)
{
cout << intArray[j] << " ";
count ++;
}
return 0;
}
@molbdnilo已经对此问题进行了评论,int temp [size]正在从堆栈中分配太多空间。如果要使用数组,请使用malloc()和free():
int *temp = malloc(size * sizeof(int));
或也建议使用矢量。
std::vector<int>temp(size);
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 如何确定我已使用非编码文件到达 EOF?
- 命名空间中具有.h和.cpp文件的类
- 如何使用ndk-build.cmd构建Android.so文件
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 如何读取文件并将该文件分类为不同类型的数据,这些数据都存储在结构中的特定数组中
- 从CSV文件C 读取和分类
- C#从文件加载数据并分类为数组
- 从其他两个文件中创建一个分类整数的文件
- 无法对包含整数的大文件进行分类
- 如何在GDAL输出文件中设置分类颜色
- OpenCV LBP 级联分类器模型 XML 文件中各种参数的含义是什么?
- 是否可以在多个头文件中拆分类
- 分类imagenet - caffe/caffe.hpp:没有这样的文件或目录