传入数组中的一个数值,这个数值在第几轮比较时就已经回到了排序的正确位置.
问一下各位,这样的冒泡排序怎么写啊
我们可以记录每一轮比较后最后一次发生交换的位置,即可判断该数值在第几轮比较时就已经回到了排序的正确位置。
下面是一种Java实现冒泡排序加强版的示例代码:
public static void bubbleSort(int[] arr, int num) {
int n = arr.length;
for (int i = 0; i < n; i++) {
boolean flag = true;
int lastSwap = 0;
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;
flag = false;
lastSwap = j+1;
}
}
if (flag) {
break;
}
if (num == arr[lastSwap]) {
System.out.println(num + " 在第 " + (i+1) + " 轮比较时已经排好序了");
break;
}
}
}
其中,参数arr是待排序的数组,参数num是需要查找的数值。在每轮比较中,如果有交换操作,就将标志位flag设为false,并记录最后一次交换的位置lastSwap。如果num在当前轮的交换中已经排好序,则在该轮结束后输出信息并退出排序。如果所有轮次结束后仍未排好序,则说明num不在数组中。