实现冒泡排序的java函数
发布时间:2023-06-20 00:07:19
冒泡排序,是一种简单的排序算法,它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就将它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
在Java中,可以通过以下函数实现冒泡排序:
public static void bubbleSort(int[] arr) {
int temp = 0;
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
该函数的参数是一个整型数组,它的返回值为void。函数中主要使用了两个嵌套循环来进行冒泡排序。 个循环控制排序的轮数,一共需要比较n-1轮;第二个循环控制每一轮比较的次数,每一轮比较的次数为n-1-i次。在每一轮比较中,如果相邻的两个元素顺序错误,则交换它们的位置。
其中,变量temp用来暂存需要交换的元素。
通过测试可以验证同时也可以优化
public static void bubbleSort(int[] arr) {
int temp = 0;
boolean flag = false;
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
flag = true;
}
}
if (!flag){
break;
}else{
flag = false;
}
}
}
在 层循环的时候,在每一轮排序之后都检测一下是否有数据交换的,如果没有交换数据说明已经排好序了,就直接结束循环;否则就继续进行下一轮排序。因为我们发现如果有一段数据已经排好序了,那么它后面的数据不需要再与前面的数据进行比较了。
