Java 实现冒泡排序

Java 实现冒泡排序

  • 一、原理
  • 二、代码实现
  • 三、运行结果

一、原理

冒泡排序是一种简单但效率较低的排序算法。其核心思想是通过相邻元素之间的比较和交换来逐渐将最大的元素“冒泡”到列表的最后。每一轮比较都会确定一个最大的元素的位置,因此需要进行 n-1 轮比较,其中 n 是列表中元素的个数。适用于小规模的数据排序。

原理如下:

  1. 从待排序的列表的第一个元素开始,依次比较相邻的两个元素。
  2. 如果前一个元素大于后一个元素,则交换这两个元素的位置,使得较大的元素排在后面。
  3. 继续比较下一对相邻元素,重复上述步骤,直到比较到列表的最后一个元素。
  4. 一轮比较结束后,最大的元素就会被放置在列表的最后一个位置。
  5. 然后,对除了最后一个元素的其他元素进行相同的比较和交换操作,直到所有元素都按照从小到大的顺序排列。

二、代码实现

//sourceArray 是待排序数组
public int[] bubbleSort(int[] sourceArray) {
    //拷贝原数组,不改变参数内容
    int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);
    int n = arr.length;

    for (int i = 0; i < n - 1; i++) {
        //用于标记本轮是否有序
        boolean flag = true;

        for (int j = 0; j < n - 1 - i; j++) {
            if (arr[j] > arr[j + 1]) {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;

                //进行交换值的操作,说明数组可能还是无序
                flag = false;
            }
        }

        if (flag) {
            break;
        }
    }

    return arr;
}
  • 时间复杂度:O(n^2)
  • 空间复杂度:O(n)

三、运行结果

排序前:
1 5 4 2 8 6 
排序后:
1 2 4 5 6 8 

你可能感兴趣的:(Java,实例,java,算法,排序算法)