为什么泡沫排序不起作用
why is bubble sort not working
给定一些数字和数字的数量,我必须按升序对它们排序,然后输出传递和交换的次数。为什么不工作?同样,我想用一个向量来解决这个问题;我是否将向量传递给函数并正确地调用它?
//bubble Sort
#include<iostream>
#include<vector>
using std::cin;
using std::cout;
bool isSorted(std::vector<int> & myData);
int main()
{
std::vector<int> myData;
int length = 0;
int pass = 0;
int swap = 0;
cin >> length;
int x = 0;
for(x; x < length; x++)
{
int input = 0;
cin >> input;
myData.push_back(input);
}
x = 1;
while(!isSorted(myData))
{
int trash = 0;
for(x; x < length; x++)
{
if(myData[x] < myData[x-1])
{
trash = myData[x];
myData[x] = myData[x-1];
myData[x-1] = trash;
swap++;
}
}
pass++;
}
cout << pass << " " << swap;
return 0;
}
bool isSorted(std::vector<int> & myData)
{
for(int i = 1; i < myData.size(); i++)
{
if(myData[i] < myData[i-1])
{
return false;
}
}
return true;
}
在冒泡排序的迭代之间不重置x
。在外部循环的第一次迭代之前,x
等于1。然后运行内部的while
循环,直到x
变成length
,然后转到外部循环的下一次迭代。到下一次迭代时,x
永远不会重置,所以它仍然等于length
,所以在第二次迭代时什么也没发生,内部循环立即中断,不做任何工作。到外部循环的第三次迭代时,什么也没发生。特别是,你的数组永远不会被排序,所以外部的while
循环永远不会中断,程序永远不会结束(也永远不会打印任何东西)。
x = 1
移动到循环中,如下所示:
...
while(!isSorted(myData))
{
x = 1;
int trash = 0;
...
相关文章:
- 尝试使用C++中的模板进行BST排序,但在使用随机字符串进行测试时不起作用
- 我的C++合并排序代码不起作用。我在这里错过了什么?
- 使用选择排序对数组数据结构进行排序,但它不起作用
- c++ 选择排序在特定情况下不起作用
- 为什么当我们使用等于'='符号比较器函数时,c ++的内置排序函数不起作用?
- C++插入排序错误功能不起作用
- 我正在编写一个拆分为 3 的合并排序,我不知道为什么它不起作用
- 为什么我的替代排序算法不起作用?
- 堆排序它不起作用或计算不正确
- C++ ceil() 在傀儡排序中不起作用
- 合并两个排序的列表 - 不起作用
- 排序功能不起作用
- 气泡排序不传递数据或不起作用
- 外壳排序算法不起作用
- 排序不起作用 c++
- 我已经在 C++ 中实现了合并排序。它没有错误,但不知何故不起作用
- 在 C++ 中使用 10 个随机整数的数组进行气泡排序不起作用
- 合并排序在 C++ 中不起作用
- 合并排序wih pthreads在C 中不起作用
- 当中间元素选择为枢轴时,快速排序C 不起作用