以下是用Java实现冒泡排序算法的完整攻略:
冒泡排序算法简介
冒泡排序是一种简单的排序算法,它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就交换位置。重复地进行直到没有任何一对数字需要比较,即所有的数字按照从小到大(或从大到小)排序完成。
冒泡排序算法步骤
- 首先,比较相邻的两个元素,如果前面的元素大于后面的元素,就交换这两个元素的位置;
- 遍历所有的元素,对每一对相邻元素做如上的比较和交换,这样最后的元素一定是最大的(或最小的);
- 针对所有的元素重复以上2个步骤,除了最后一个;
- 重复步骤1-3,直至排序完成。
代码实现
下面是Java代码实现冒泡排序算法的示例:
public class BubbleSort {
public static void main(String[] args) {
int[] arr = {90, 23, 101, 45, 65, 23, 67, 89, 34, 25};
bubbleSort(arr);
System.out.println(Arrays.toString(arr));
}
private static void bubbleSort(int[] arr) {
int len = arr.length;
for (int i = 0; i < len - 1; i++) {
for (int j = 0; j < len - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
}
上面的代码首先定义了一个名为BubbleSort
的类,其中有一个名为main
的方法作为程序的入口。main
方法中定义了一个数组arr
,数组中包含待排序的10个整数,然后通过调用bubbleSort
方法对这个数组进行排序,并使用Arrays.toString
方法将结果输出到控制台。
bubbleSort
方法接受一个整型数组作为参数,在方法内部实现了冒泡排序算法。首先,使用len
保存数组的长度,然后使用两个嵌套的循环来遍历数组,排除已经排序好的元素。在遍历过程中,比较相邻的元素大小,如果前一个元素大于后一个元素,就将它们交换位置。最后,经过多次遍历之后,数组arr
就会被排序好,排在后面的元素一定是最大的,排在前面的元素一定是最小的。
示例说明
下面是两个针对上面代码的说明示例:
示例1:
现在有一个数组a,其中包含如下10个整数:{3,2,4,1,6,8,0,9,5,7},请使用上述的Java代码中的bubbleSort
方法对数组进行排序。请问,数组排序完成后的结果应当是什么?
回答:
将bubbleSort
方法应用到给定的数组中,进行排序之后的结果应当是:{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}。
示例2:
现在你已经掌握了这个算法,现在请你自己编写一个Java程序,让用户自定义一个数组a,然后调用bubbleSort
方法对这个数组进行排序,最后输出排序后的结果。
回答:
以下是实现上述要求的Java代码:
import java.util.Arrays;
import java.util.Scanner;
public class BubbleSortDemo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 第一步:让用户自定义一个数组arr
System.out.println("请输入要排序的元素个数: ");
int n = sc.nextInt();
int[] arr = new int[n];
System.out.println("请输入数组的元素: ");
for (int i = 0; i < n; i++) {
arr[i] = sc.nextInt();
}
// 第二步:调用bubbleSort方法对数组排序
bubbleSort(arr);
// 第三步:输出排序后的结果
System.out.println("排序后的结果是: ");
System.out.println(Arrays.toString(arr));
}
private static void bubbleSort(int[] arr) {
int len = arr.length;
for (int i = 0; i < len - 1; i++) {
for (int j = 0; j < len - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
}
上面的代码首先通过Scanner
类让用户自定义一个包含若干(由用户输入)整数的数组arr
,然后使用bubbleSort
方法对其进行排序。最后,使用Arrays.toString
方法将排序后的数组结果打印到控制台。
现在,你可以根据自己的需要编写类似上面的程序,对任意大小、多个元素的数组进行排序。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:用java实现冒泡排序算法 - Python技术站