Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 通过比较数组中的相邻元素来计算交换数_C++ - Fatal编程技术网

C++ 通过比较数组中的相邻元素来计算交换数

C++ 通过比较数组中的相邻元素来计算交换数,c++,C++,我试图计算交换次数,以便按升序对给定数组进行排序。在for循环中,我有一个if条件来检查条件weather to swap or not,但在if条件中,我添加了一个cout语句来检查哪些元素正在被比较,当我有cout语句时,打印的swap数量是不同的,当我删除该声明时,打印的掉期数量不同,对于样本: 如果我有cout语句 样本输入 1 4 4 1 2 3 1 4 4 1 2 3 和输出为 3 4 如果我删除或评论cout语句 样本输入 1 4 4 1 2 3 1 4

我试图计算交换次数,以便按升序对给定数组进行排序。在for循环中,我有一个if条件来检查条件weather to swap or not,但在if条件中,我添加了一个
cout
语句来检查哪些元素正在被比较,当我有
cout
语句时,打印的swap数量是不同的,当我删除该声明时,打印的掉期数量不同,对于样本:

如果我有cout语句

样本输入

1

4

4 1 2 3
1

4

4 1 2 3
和输出为

3
4
如果我删除或评论cout语句

样本输入

1

4

4 1 2 3
1

4

4 1 2 3
和输出为

3
4
我想不出原因

#include <iostream>
using namespace std;
int main() {
    int swap=0,t,n,arr[20],temp;
    cin>>t;
    while(t!=0) {
      cin>>n;
      for(int  i = 0 ; i < n ; i++) {
         cin>>arr[i];
      }
      for(int i = 0 ; i < n ; i++) {
        if(arr[i]>arr[i+1]) {
          swap++;
          cout<<arr[i]<<">"<<arr[i+1]<<endl; //this cout statement
          temp=arr[i];
          arr[i]=arr[i+1];
          arr[i+1]=temp;
        }
      }
      cout<<swap<<endl;
      --t; 
    }
    return 0;
}
#包括
使用名称空间std;
int main(){
int swap=0,t,n,arr[20],温度;
cin>>t;
while(t!=0){
cin>>n;
对于(int i=0;i>arr[i];
}
对于(int i=0;iarr[i+1]){
swap++;

cout您的结果是不确定的,因为您正在访问不应访问的数组位置,即当i=n-1时,[i+1]正试图访问“脏”内存的[n]。
此外,我认为你的算法没有达到你想要的效果。我建议你在继续之前阅读。从正确的代码中,添加计数器(正如你所做的那样)就足以获得正确的结果。

arr[I+1]
如果我没有弄错,它是不受限制的。arr[I+1]的值是多少在循环的最后一次迭代中,即i=n-1?