gpt4 book ai didi

c++ - 如何计算冒泡排序中的交换?

转载 作者:行者123 更新时间:2023-11-30 03:49:54 24 4
gpt4 key购买 nike

我正在尝试编写一个程序来仅计算交换次数并计算已排序数组的校验和。但是,我不确定为什么计数器没有得到正确的掉期!我已经跟踪了很多次,这应该工作得很好。我错过了什么?

该程序只输入一个正数作为数组的输入,要终止程序并显示交换,您应该输入“-1”

一个简单的输入示例:

1 4 3 2 6 5 -1

输出应该是

3

但输出根本不正确。

#include"stdafx.h"
#include <iostream>
using namespace std;

void bubble_sort(unsigned long long int arr[], int n)
{
int swaps=0;
for (int i = 0; i < n-1; ++i) {
for (int j = 0; j < n - i - 1; ++j) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
swaps++;
}
}
}

cout << "Swaps: " << swaps << endl;
}

int main() {
int count=0;
unsigned long long int input_ar[1000];
cout << "Enter the numbers: " << endl;
for (int i = 0; i < 1000; i++) {
cin >> input_ar[i];
if (input_ar[i] == -1) {
break;
}
count++;
}

bubble_sort(input_ar, count);
return 0;
}

最佳答案

对于 1 4 3 2 6 5 系列,您首先交换 43(一次交换),然后 4 2(两次交换),然后是 65(三次交换)。这给你留下了像 1 3 2 4 5 6 这样的数组,所以它直到没有完全排序,你将有另一个交换来将 2 放在正确的位置,领先到四次交换(如果代码按预期工作)。

关于c++ - 如何计算冒泡排序中的交换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32151365/

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