Java 常见例子

冒泡排序是最简单的排序算法。冒泡排序基于这样的思想:如果发现顺序错误,则对每个相邻元素进行比较和交换。

示例:

要理解冒泡排序,让我们考虑一个未排序的数组 [1, 23, 10, -2] 并讨论按升序对数组进行排序所采取的每个步骤。在每次传递中,都会检查两个相邻元素,如果发现顺序错误则进行交换。

第一次通过: (1)(23) 进行比较并发现正确的顺序(在本例中为升序)。之后比较 (23)(10),因为 (23>10),因此这些数字被交换。然后比较并交换 (23)(-2)

第二遍: 比较(1)(10)并发现顺序正确。然后比较 (10)(-2),因为 (10>-2),因此这些数字被交换。之后,比较(10)(23)并按正确的顺序找到。

第三遍 : (1)(-2) 进行比较,因为 (1>-2),因此这些数字被交换。之后检查 (1,10)(10,23) 并按正确顺序找到。

Java 冒泡排序

冒泡排序的实现

public class MyClass {
  // 冒泡排序函数
  static void bubblesort(int Array[]) {
    int n = Array.length;
    int temp;   
    for(int i=0; i<n; i++) {
      for(int j=0; j<n-i-1; j++) {
        if(Array[j]>Array[j+1]) {
          temp = Array[j];
          Array[j] = Array[j+1];
          Array[j+1] = temp;
        }
      }
    }
  }

  //打印数组的函数
  static void PrintArray(int Array[]) { 
    int n = Array.length; 
    for (int i=0; i<n; i++)  
      System.out.print(Array[i] + " "); 
    System.out.println(); 
  } 

  //测试代码
  public static void main(String[] args) {
    int[] MyArray = {1, 10, 23, 50, 4, 9, -4};
    System.out.println("原始数组");
    PrintArray(MyArray);

    bubblesort(MyArray);
    System.out.println("\n排序数组");
    PrintArray(MyArray);  
  }
} 

上面的代码将给出以下输出:

原始数组
1 10 23 50 4 9 -4 

排序数组
-4 1 4 9 10 23 50 

时间复杂度:

在所有情况下,即使整个数组已排序,冒泡排序的时间复杂度也是θ(N²),因为整个数组的每个元素都需要迭代,它包含两个嵌套循环。