【发布时间】:2014-05-19 22:44:15
【问题描述】:
这是一个非常简单的问题。我用冒泡排序代码在网上查了一下,看起来我也在做同样的事情。这是我带有模板的完整 C++ 代码。但是输出有点奇怪!
#include <iostream>
using namespace std;
template <class T>
void sort(T a[], int size){
for(int i=0; i<size; i++){
for(int j=0; j<i-1; j++){
if(a[j+1]>a[j]){
cout<<"Yes at j="<<j<<endl;
T temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
}
int main(){
int a[] = {1,2,6,3,4,9,8,10};
sort<int>(a,8);
for(int i = 0; i<8; i++){
cout<<a[i]<<endl;
}
return 0;
}
输出:
但是当我稍微改变逻辑以尝试按升序对其进行排序时。即改成:if(a[j+1]<a[j]),输出没问题!
我哪里做错了?
提前致谢!
【问题讨论】:
-
你是
using namespace std;,但是你去命名与std::sort相同的东西。不要使用命名空间,也不要确保命名不同。 -
为什么输出很奇怪?这些数字在我看来是有序的。编辑:我看到你想要在第一种情况下升序。好的。
-
@PaulMcKenzie :不是第一个案例!
-
@PaulMcKenzie 看第一张截图。
-
@cipher 对你仍然有问题并不感到惊讶,但你应该注意这种事情。这是引入命名空间的主要原因(即防止命名冲突)。您会发现许多 C++ 开发人员从不使用
using和std。
标签: c++ algorithm sorting bubble-sort