【发布时间】:2016-10-13 12:48:30
【问题描述】:
我已经实现了插入排序,我猜这很好。它从文件中读取并为输入 10,100,1000,10000,10000 正确排序。
但是,当我投入一百万美元时,它什么也没做。我什至等了 10 分钟来检查它是否太慢。
我动态创建了我的数组,并尝试了合并排序。一百万输入它工作得非常好,但我不明白为什么只有插入排序算法不能处理一百万输入。这是代码的一部分;
#include <iostream>
#include <fstream>
using namespace std;
void InsertionSort(int* array, int& size);
int main()
{
int size;
ifstream myfile("data.txt");
myfile.open("data.txt");
cout << "How many elements do you want to read" << endl;
cin >> size;
int* array = new int[size];
for (int i = 0; i < size; i++) {
myfile >> array[i];
}
InsertionSort(array, size);
delete[] array;
}
void InsertionSort(int* array, int& size)
{
int temp, j;
for (int i = 1; i < size; i++) {
j = i;
while (j > 0 && array[j - 1] > array[j]) {
temp = array[j];
array[j] = array[j - 1];
array[j - 1] = temp;
j--;
}
}
}
【问题讨论】:
-
只需附加一个调试器,然后我猜测并查看它的作用。如果它仍然在您的分拣程序中,则需要很长时间。或者让它运行几个小时,然后再回来查看。
-
@Hayt 谢谢,我会努力的。希望每个人都像你一样善良。每个人都想在这里证明一些东西,而不是帮助任何人
-
@G.Rust FWIW,我认为您的问题适合 SO。如果您希望人们给您提示/最佳实践,我邀请您到codereview。否则,请继续在这里发帖。 :)
-
我很困惑为什么这被否决了。当然,代码不是最好的,帖子可以使用一些格式,但问题本身对我来说似乎是合理的。
-
@GManNickG 是这么想的,但他们虽然没用,因此暂时禁止我提问..
标签: c++ algorithm sorting input insertion-sort