C++ 排序算法代码中的未知问题
我是个新手。这听起来可能很愚蠢,因为它是一个简单的算法。下面的程序编译成功,但当我运行它时,它不会打印排序数组。在排序算法完成之前,代码工作正常。然后它不会打印排序后的数组。我做错了什么?代码:C++ 排序算法代码中的未知问题,c++,algorithm,bubble-sort,C++,Algorithm,Bubble Sort,我是个新手。这听起来可能很愚蠢,因为它是一个简单的算法。下面的程序编译成功,但当我运行它时,它不会打印排序数组。在排序算法完成之前,代码工作正常。然后它不会打印排序后的数组。我做错了什么?代码: #include <iostream> #include <cstdlib> using namespace std; int main() { int n, i, k = -1; cout << "Enter the number of elem
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int n, i, k = -1;
cout << "Enter the number of elements: ";
cin >> n;
int arr[n];
cout << "Enter the elements to be sorted: ";
for (i = 0; i < n; i++)
{
cin >> arr[i];
}
cout << "The unsorted array: \n";
for(i = 0; i < n; i++)
{
cout << arr[i] << ' ';
}
cout << endl;
//BubbleSort.
for(int e = n-1; e > 0; --e)
{
for (i = 0; i > e; ++i)
{
if (arr[i] > arr[i + 1]) {
arr[i] = k;
arr[i] = arr[i + 1];
arr[i + 1] = k;
}
}
}
cout << "The sorted list: ";
for (int x = 0; x > n; ++x)
{
cout << arr[x] << ' ';
}
system("pause");
return 0;
}
#包括
#包括
使用名称空间std;
int main()
{
int n,i,k=-1;
cout>n;
int-arr[n];
cout>arr[i];
}
难道不是“初学者”的错误吗
最好使用std::cout
或调试器来定位错误/缺陷
注意比较和作业
arr[i]=k代码>应为k=arr[i]代码>
for(i=0;i>e;++i)
应该是for(i=0;i
及
for(int x=0;x>n;++x)
应该是for(int x=0;x
“初学者”的错误不是真的吗
最好使用
std::cout
或调试器来定位错误/缺陷
注意比较和作业
arr[i]=k代码>应为k=arr[i]代码>
for(i=0;i>e;++i)
应该是for(i=0;i
及
for(int x=0;x>n;++x)
应该是for(int x=0;x
推荐重读C++教程和编程一般,有些错误是基本的:
- 比较运算符
- 分配
问题代码:
for (int e = n - 1; e > 0; --e) {
for (i = 0; i < e; ++i) { // << change here, i > e -> i < e you are incrementing
if (arr[i] > arr[i + 1]) {
k = arr[i]; // change here, you save in a tmp variable to swap values
arr[i] = arr[i + 1];
arr[i + 1] = k;
}
}
}
cout << "The sorted list: ";
for (int x = 0; x < n; ++x) { // change here x > n -> x < n same as before.
cout << arr[x] << ' ';
}
for(int e=n-1;e>0;--e){
对于(i=0;iiarr[i+1]){
k=arr[i];//在这里进行更改,您将保存在一个tmp变量中以交换值
arr[i]=arr[i+1];
arr[i+1]=k;
}
}
}
cout n->x CUT推荐重读C++教程和编程一般,有些错误是基本的:
- 比较运算符
- 分配
问题代码:
for (int e = n - 1; e > 0; --e) {
for (i = 0; i < e; ++i) { // << change here, i > e -> i < e you are incrementing
if (arr[i] > arr[i + 1]) {
k = arr[i]; // change here, you save in a tmp variable to swap values
arr[i] = arr[i + 1];
arr[i + 1] = k;
}
}
}
cout << "The sorted list: ";
for (int x = 0; x < n; ++x) { // change here x > n -> x < n same as before.
cout << arr[x] << ' ';
}
for(int e=n-1;e>0;--e){
对于(i=0;iiarr[i+1]){
k=arr[i];//在这里进行更改,您将保存在一个tmp变量中以交换值
arr[i]=arr[i+1];
arr[i+1]=k;
}
}
}
cout n->x cout作为一个初学者并不是不调试自己程序的借口,正如@Matt所说,你需要学习如何调试你的程序。从打印变量和检查点开始。如果你想更深入的了解,请查看调试教程。好的,好的!!!对于那些对我的第一句话有疑问的人,我很抱歉。我一定会学会调试代码:p。有什么好的教程吗作为初学者并不是不调试自己程序的借口,正如@Matt所说,你需要学习如何调试自己的程序。从打印变量和检查点开始。如果你想更深入的了解,请查看调试教程。好的,好的!!!对于那些对我的第一句话有疑问的人,我很抱歉。我一定会学会调试代码:p。有什么好的教程吗谢谢你的快速回复!但是,我按照您的建议修改了代码,但现在它只是按原样打印数组,而不是排序。O.O您可能不应该鼓励人们使用SO作为调试工具。@EdwardMckinzie确保您了解如何查找这些错误。您绝对不应该这样做。这类问题对未来的访客没有用处。@KarolyHorvath@Keyser抱歉,我已经有一段时间没有回复帖子了,我时不时会忘记社区规则。谢谢您的快速回复!但是,我按照您的建议修改了代码,但现在它只是按原样打印数组,而不是排序。O.O您可能不应该鼓励人们使用SO作为调试工具。@EdwardMckinzie确保您了解如何查找这些错误。您绝对不应该这样做。这类问题对未来的访客没有用处。@KarolyHorvath@Keyser抱歉,我已经有一段时间没有回复帖子了,我时常会忘记社区规则。