gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 03:18:43 27 4
gpt4 key购买 nike

我正在尝试计算交换次数以按升序对给定数组进行排序。在 for 循环中我有一个 if 条件来检查条件天气是否交换,但是在 if 条件中我添加了一个 cout 语句来检查正在比较哪些元素,当我有那个 cout 语句打印的交换数量不同,当我删除该语句时打印的交换数量不同,例如:

如果我有 cout 语句

示例输入

1

4

4 1 2 3

输出为

3

如果我删除或评论那个 cout 语句

示例输入

1

4

4 1 2 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;
}

最佳答案

您的结果是不确定的,因为您正在访问不应访问的数组位置,即当 i = n - 1 时,a[i+1] 试图访问“脏”的 [n] “内存。此外,我认为您的算法没有按照您的意愿进行。我建议你阅读 here在进一步之前。从正确的代码中,添加计数器(就像您所做的那样)就足以获得正确的结果。

关于c++ - 通过比较数组中的相邻元素来计算交换次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54425200/

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