gpt4 book ai didi

java - 如何输出冒泡排序中执行的传递次数直到数组排序?

转载 作者:行者123 更新时间:2023-12-02 09:17:58 25 4
gpt4 key购买 nike

package codeabb;
import java.util.*;

public class Bsort {

public static void main(String args[]) {

Scanner in = new Scanner(System.in);
int num = in.nextInt();
int arr[] = new int[100];
int swap = 0;
int pass = num-1;

for( int i = 0; i < num; i++) {
arr[i] = in.nextInt();
}

for( int i = 0; i < num-1; i++) {
pass--;
for( int j = i+1; j < num; j++) {
int temp;
if(arr[i] > arr[j]) {
swap++;

temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;

}


}



}



System.out.print(pass + " "+swap);

}

}

我试图输出数组排序时进行的交换和传递的数量。我猜传递次数是 array-1 的总数?因此,我已经初始化了它,并在每次执行交换时扣除,因为一旦进行交换,就会进行下一次传递。但输出不对。有人可以帮助我吗?

最佳答案

您不应减少传递次数,而应在每次外循环迭代时增加传递次数,并且当内循环中没有交换时,您可以中断外循环。这样您将获得适当数量的通行证。

int pass=0;
for (int i = 0; i < num - 1; i++) {
boolean swapsMade = false;
pass++;
for (int j = i + 1; j < num; j++) {
int temp;
if (arr[j] > arr[j+1]) {
swap++;
swapsMade = true;
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
if (!swapsMade) {
break;
}
}

关于java - 如何输出冒泡排序中执行的传递次数直到数组排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58871129/

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