gpt4 book ai didi

c++ - 未处理的异常排序递归

转载 作者:行者123 更新时间:2023-11-28 00:23:58 27 4
gpt4 key购买 nike

我在 C++ 中遇到递归排序赋值问题。不幸的是,我们被指定以一种非常具体的方式来做这件事,但我似乎无法让它做我想做的事,而且由于我不习惯递归,所以我不能很好地遵循它来解决问题射击。我得到的错误是 Unhandled exception at 0x77d915fe in SortFinal.exe: 0xC0000005: Access violation. 大概这是来自 a[] 中使用的数组排序功能。我是这个网站的新手,所以如果组织很糟糕请原谅我,但这是我目前的代码:

#include <iostream>
using namespace std;
// prototypes
void sort(int a[], int i, int j);

int main() {
int x[4] = {3, 1, 5, 2};

for (int count = 0; count < 4; count++) {
cout << x[count] << ": ";
}

cout << endl;

sort(x, 0, 4);

for (int count = 0; count < 4; count++) {
cout << x[count] << ": ";
}

cout << endl;

system("pause");
return 0;
}

void sort(int a[], int i, int j) {
int first;
if (j > i) {
int index = i + 1;
bool done = false;
first = a[i];
sort(a, i + 1, j);
for (!done && index <= j; index++;) {
if (first < a[index]) {

a[index - 1] = a[index];
} else {
a[index - 1] = first;
done = true;
}
}

if (!done && index > j) {
a[index - 1] = first;
}
}
}

最佳答案

有问题的行是:for (!done && index <= j; index++;) {在 for 循环中,第一个 block 是初始化,第二个是停止条件,第三个是增量,如果您要放置停止条件作为初始化增量作为停止条件,由for (; !done && index <= j; index++) {改变.在 SO 中发帖之前,请务必好好看看。任何编译器(我的意思是任何编译器)都会捕获此错误,并显示一条足以让您找出问题所在的错误消息。在 GCC 4.9.1 中是:

E:\test.cpp: In function 'void sort(int*, int, int)':
E:\test.cpp:34:20: warning: statement has no effect [-Wunused-value]
for (!done && index <= j; index++;) {
^

编译时始终启用所有警告(GCC 和 Clang 中的 -Wall,Visual C++ 中至少选择 level 4),编译器会帮助您修复很多问题(有效代码是错误)。

关于c++ - 未处理的异常排序递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26006831/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com