首页  >  文章  >  Java  >  Java 中的冒泡排序

Java 中的冒泡排序

WBOY
WBOY原创
2024-08-30 15:31:50581浏览

冒泡排序是Java中最常用的数据排序算法之一。排序是通过递归比较相邻数字并按升序或降序移动它们来完成的。完成元素的移动,直到所有数字都按照所需的顺序完全排序。冒泡排序之所以得名,是因为数组冒泡的元素是它们的开始方式。让我们通过一个例子来理解冒泡排序算法。

示例:考虑需要按升序排列的数字数组 [6 1 8 5 3]。

开始您的免费软件开发课程

网络开发、编程语言、软件测试及其他

冒泡排序算法会进行多次迭代,直到发现所有数字都已排序。

迭代

下面是Java中冒泡排序的迭代过程如下:

第一次迭代

[6 1 8 5 3] – 首先比较前两个数字,并将两个数字中较小的数字向右移动。因此在 6 和 1 中,1 是向左移动的较小数字,6 是向右移动的数字。 [1 6 8 5 3] – 接下来,它通过向右移动一个位置来比较相邻的两个数字。这里,数字 6 小于 8,因此保留相同的顺序。 [1 6 8 5 3] – 再次向右移动一个位置,在 8 和 5 之间进行比较。数字 5 向左移动,因为它较小超过 8。 [1 6 5 8 3] – 此处,数字 8 和 3 之间进行比较。数字 3 向左移动,因为它小于 8。 [1 6 5 3 8] – 这是第一次迭代后订单的最终结果。

第二次迭代

由于数字仍未完全增加,程序进行第二次迭代。

[1 6 5 3 8] – 这里,再次从第一次迭代结果的前两位开始比较。它比较数字 1 和 6 并保留相同的顺序,因为 1 小于 6。 [1 6 5 3 8] – 此处比较数字 5 和 6。保留相同的顺序,因为它已经处于所需的递增顺序中。 [1 5 6 3 8] – 数字 6 和 3 之间发生比较。数字 3 向左移动,因为它小于 6。 [1 5 3 6 8] – 接下来,数字 6 和 8 相互比较。保留与预期顺序相同的顺序。 [1 5 3 6 8] – 这是第二次迭代后的最终结果。尽管如此,我们仍然可以注意到数字并没有完全按照升序排列。尽管如此,我们仍然需要交换数字 5 和 3 才能得到最终结果。因此程序进行第三次迭代。

第三次迭代

[1 5 3 6 8] – 第三次迭代从比较前两位数字 1 和 5 开始。由于顺序符合预期,因此保持不变。 [1 5 3 6 8]- 接下来,比较相邻的数字 3 和 5。由于5比3大,所以移到右侧。 [1 3 5 6 8] – 迭代继续比较数字 5 和 6、6 和 8。由于它符合所需的顺序,因此它保留顺序。 [1 3 5 6 8] – 最后停止迭代,程序遍历比较每个相邻元素,发现所有数字都是升序的。

由于只需对数组的 5 个元素进行排序,因此只需要 3 次迭代。随着数组中元素的增加,迭代次数也会增加。

使用 Java 实现冒泡排序

下面是Java代码,它实现了冒泡排序算法。 (请注意,Java 中数组的第一个位置从 0 开始,以 1 为增量继续,即 array[0]、array[1]、array[2],如此继续。)

代码:

import java.util.Scanner;
public class BubbleSort {
static void bubbleSort(int[] arraytest) {
int n = arraytest.length; //length of the array is initialized to the integer n
int temp = 0; //A temporary variable called temp is declared as an integer and initialized to 0
for(int i=0; i < n; i++){ // first for loop performs multiple iterations
for(int j=1; j < (n-i); j++){
if(arraytest[j-1] > arraytest[j]){ // if loop compares the adjacent numbers
// swaps the numbers
temp = arraytest[j-1]; // assigns the greater number to temp variable
arraytest[j-1] = arraytest[j]; // shifts the lesser number to the previous position
arraytest[j] = temp; // bigger number is then assigned to the right hand side
}
}
}
}
public static void main(String[] args) {
int arraytest[] ={23,16,3,42,75,536,61}; // defining the values of array
System.out.println("Array Before Doing Bubble Sort");
for(int i=0; i < arraytest.length; i++){ // for loop used to print the values of array
System.out.print(arraytest[i] + " ");
}
System.out.println();
bubbleSort(arraytest); // array elements are sorted using bubble sort function
System.out.println("Array After Doing Bubble Sort");
for(int i=0; i < arraytest.length; i++){
System.out.print(arraytest[i] + " "); // for loop to print output values from array
}
}
}

输出:

Java 中的冒泡排序

Java 中冒泡排序的优点和缺点

以下是 Java 中冒泡排序的不同优点和缺点:

优点

  1. 代码非常容易编写和理解。通常只需要几分钟。
  2. 实施也非常容易。
  3. 冒泡排序对数字进行排序并将它们保留在内存中,因此节省了大量内存。

缺点

  1. 该算法不适合大型数据集,因为比较需要花费大量时间。对输入数字进行排序所需的时间呈指数增长。
  2. O(n^2) 是冒泡排序的平均复杂度,O(n) 是最好情况复杂度(最好情况是元素排在第一位时),其中 n 是元素数量。

实时应用

由于冒泡排序能够检测排序中的微小错误,因此它被用于计算机图形学中。它也用在多边形填充算法中,需要对多边形的顶点衬里进行排序。

结论

本文了解了冒泡排序算法的工作原理以及如何使用 Java 编程来实现它。冒泡排序是一种非常稳定的算法,可以针对相对较小的数据集轻松实现。这是一个比较算法的案例,由于简单,适合新手使用。

以上是Java 中的冒泡排序的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn