我删除了代码,因为它是作业。如果你确实需要帮助,你可以看看我与George B(下面)讨论的内容,或者PM Me。随机快速排序[在一些输入上崩溃]
嗨,大家好。这是一项家庭作业。我已经对其他排序算法进行了测试,并且Q.S.是唯一一个在某些随机输入上崩溃的人。
该程序退出长(与其他的东西),但随机地生成输入....
我花几个小时跟踪代码和仍然无法找出任何错误.... QS对于专业人士来说可能是非常容易的,所以我希望能够在这个实现方面接受建议......
任何输入赞赏!
问:什么是“随机”?
答:包括一代的一部分。
void randomArray(unsigned long*& A, unsigned long size)
{
//Note that RAND_MAX is a little small for some compilers (2^16-1).
//In order to test our algorithms on large arrays without huge
//numbers of duplicates, we'll set the high-order and low-order
//parts of the return value with two random values.
A = new unsigned long[size];
for(unsigned long i=0; i<size; i++)
A[i] = (rand()<<16) | (rand());
//Another note: initially, if you want to test your program out with smaller
//arrays and small numbers, just reduce A[i] mod k for some small value k as in the following:
//A[i] = rand() % 16;
//this may help you debug at first.
}
问:什么样的错误?
嗯,我没有收到编译错误。如果没有Q.S.,我可以毫无问题地运行其他四种排序算法(我可以连续运行排序)。当Q.S被激活后,运行程序一两次或三次后,甚至在第一次运行时,程序结束(我使用Eclipse,所以控制台结束)。
输入元件的数量,或 负数退出:5 {一些 阵列}
选择排序了0秒。合并 排序花了0秒。快速排序花了0 秒。堆排序花了0秒。 桶排序花了0秒。 { 5排序阵列的输出}
输入元件的数量,或 负数退出:6 {一些 阵列}
选择排序了0秒。合并 排序花了0秒。快速排序花了0 秒。堆排序花了0秒。 桶排序花了0秒。
输入元件的数量,或 负数退出{5个排序阵列的输出}:8 {阵列} ---控制台结束---
同样,问题在于它经常崩溃,所以这表明访问违规的可能性很高,但是做了10次以上的跟踪,我没有看到问题....(也许我超负荷了我的大脑堆栈 - _ - )
谢谢。
一起使用的“随机”和“排序”一词有点混淆。 – jwueller 2010-12-12 23:25:33
你能告诉我们错误是什么吗? – ALOToverflow 2010-12-12 23:25:43
嗨,是的。我编辑我的帖子的答案和完整的程序...我希望这有助于调试...谢谢....我仍然在追踪...:/ – CppLearner 2010-12-12 23:42:17