Table of Contents
How bubble sort works
First iteration
Following iterations
Implementation of bubble sort
Optimized bubble sort
Complexity of bubble sort
Time complexity:
Best case (O(n)):
Average case (O(n²)):
Worst case (O(n²)):
Space complexity O(1):
Conclusion
Home Java javaTutorial Understanding Bubble Sort Algorithm (with Examples in Java)

Understanding Bubble Sort Algorithm (with Examples in Java)

Jan 18, 2025 am 02:14 AM

Detailed explanation of Bubble Sort: a simple sorting algorithm

Bubble sort is one of the simplest sorting algorithms. It works by repeatedly comparing adjacent elements and swapping them if they are out of order. For example, if the sort order is ascending, adjacent elements are compared and the larger element is placed on the right. In each iteration, we compare only the unsorted elements and place the largest element at the last position of the unsorted elements in the array.

This algorithm is aptly named bubble sort because the elements move toward the right side of the array on each iteration, like a bubble rising to the surface of the water.

How bubble sort works

Suppose we want to sort this array in ascending order:

Understanding Bubble Sort Algorithm (with Examples in Java)

First iteration

In the first iteration, we try to move the largest element to the end of the array. So we will repeatedly compare adjacent elements and swap them if they are out of order.

Understanding Bubble Sort Algorithm (with Examples in Java)

Elements that have been moved to the correct position are considered sorted.

Following iterations

This process is repeated for all iterations until the array is sorted. In each iteration, we only compare the unsorted elements since the sorted elements are already in the correct order.

Understanding Bubble Sort Algorithm (with Examples in Java)

We iterate over the array n-1 times, where n is the length of the array. That is, since our array has six elements, we only iterate through the array five times. This is because, after the fifth iteration, the five elements have been placed in their correct positions, so the final unsorted element is considered sorted. After all iterations are completed, we will get a sorted array.

Implementation of bubble sort

public class BubbleSortTest {
    public static void main(String[] args) {
        int[] arr = {8, 2, 6, 4, 9, 1};
        System.out.println("未排序数组: " + Arrays.toString(arr));
        bubbleSort(arr);
        System.out.println("已排序数组: " + Arrays.toString(arr));
    }

    public static void bubbleSort(int[] arr) {
        int size = arr.length;

        // 循环遍历数组 size-1 次
        for (int i = 0; i < size - 1; i++) {
            // 比较相邻元素
            for (int j = 0; j < size - i - 1; j++) {
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }
}
Copy after login

Running this code will print the following output in the console:

<code>未排序数组: [8, 2, 6, 4, 9, 1]
已排序数组: [1, 2, 4, 6, 8, 9]</code>
Copy after login

In this implementation of bubble sort, we will iterate through the array each time, even if the array is already sorted. We can further optimize the code so that the sorting stops once the array has been sorted.

Optimized bubble sort

public static void bubbleSortOptimised(int[] arr){
    int size = arr.length;
    boolean swapped;

    // 循环遍历数组 size-1 次
    for (int i = 0; i < size - 1; i++) {
        swapped = false;
        // 比较相邻元素
        for (int j = 0; j < size - i - 1; j++) {
            if (arr[j] > arr[j+1]){
                int temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;

                swapped = true;
            }
        }

        // 如果没有交换,则数组已排序
        if(!swapped) break;
    }
}
Copy after login

With this implementation, if we try to sort an array that is already sorted, we will only iterate once and stop when no sorting occurs.

Complexity of bubble sort

Time complexity:

Best case (O(n)):

The best case scenario is that the input array is already sorted. The algorithm only iterates the array once to check if it is sorted and does not perform any swapping.

Average case (O(n²)):

When the input array elements are in random order. The algorithm must iterate multiple times and perform swaps to sort the array.

Worst case (O(n²)):

The worst case scenario is that the input array is sorted in reverse order. The algorithm goes through n-1 iterations and performs the maximum number of swaps.

Space complexity O(1):

Bubble sort is an in-place sorting algorithm, that is, it does not require any additional memory proportional to the size of the input array.

Conclusion

Bubble sort is an algorithm that is easy to understand and implement. However, due to its high time complexity, it is not suitable for processing large data sets. Bubble sort can be used when working with small data sets, or when you don't care about complexity.

The above is the detailed content of Understanding Bubble Sort Algorithm (with Examples in Java). For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1653
14
PHP Tutorial
1251
29
C# Tutorial
1224
24
Is the company's security software causing the application to fail to run? How to troubleshoot and solve it? Is the company's security software causing the application to fail to run? How to troubleshoot and solve it? Apr 19, 2025 pm 04:51 PM

Troubleshooting and solutions to the company's security software that causes some applications to not function properly. Many companies will deploy security software in order to ensure internal network security. ...

How do I convert names to numbers to implement sorting and maintain consistency in groups? How do I convert names to numbers to implement sorting and maintain consistency in groups? Apr 19, 2025 pm 11:30 PM

Solutions to convert names to numbers to implement sorting In many application scenarios, users may need to sort in groups, especially in one...

How to simplify field mapping issues in system docking using MapStruct? How to simplify field mapping issues in system docking using MapStruct? Apr 19, 2025 pm 06:21 PM

Field mapping processing in system docking often encounters a difficult problem when performing system docking: how to effectively map the interface fields of system A...

How to elegantly obtain entity class variable names to build database query conditions? How to elegantly obtain entity class variable names to build database query conditions? Apr 19, 2025 pm 11:42 PM

When using MyBatis-Plus or other ORM frameworks for database operations, it is often necessary to construct query conditions based on the attribute name of the entity class. If you manually every time...

How does IntelliJ IDEA identify the port number of a Spring Boot project without outputting a log? How does IntelliJ IDEA identify the port number of a Spring Boot project without outputting a log? Apr 19, 2025 pm 11:45 PM

Start Spring using IntelliJIDEAUltimate version...

How to safely convert Java objects to arrays? How to safely convert Java objects to arrays? Apr 19, 2025 pm 11:33 PM

Conversion of Java Objects and Arrays: In-depth discussion of the risks and correct methods of cast type conversion Many Java beginners will encounter the conversion of an object into an array...

E-commerce platform SKU and SPU database design: How to take into account both user-defined attributes and attributeless products? E-commerce platform SKU and SPU database design: How to take into account both user-defined attributes and attributeless products? Apr 19, 2025 pm 11:27 PM

Detailed explanation of the design of SKU and SPU tables on e-commerce platforms This article will discuss the database design issues of SKU and SPU in e-commerce platforms, especially how to deal with user-defined sales...

How to use the Redis cache solution to efficiently realize the requirements of product ranking list? How to use the Redis cache solution to efficiently realize the requirements of product ranking list? Apr 19, 2025 pm 11:36 PM

How does the Redis caching solution realize the requirements of product ranking list? During the development process, we often need to deal with the requirements of rankings, such as displaying a...

See all articles