Bubble Sort

File:Sorting bubblesort anim.gif

Reference: https://commons.wikimedia.org/wiki/File:Sorting_bubblesort_anim.gif

Compare each element in the list with the one before it, starting with the last (or maybe the first) element. Replace the two elements if one element is less than the preceding one. Bubble Sort operates by periodically switching with the neighboring items.

Once the list has been sorted through, we must repeat this process n-1 times, where n is the length of the list.

An example of Bubble Sort

If A=[40, 50, 10, 35, 90, 15, 5, 60]

Parse 01

[40, 50, 10, 35, 90, 15, 5, 60] //Compare last 2 element, 5<60 no interchange
[40, 50, 10, 35, 90, 15, 5, 60] //A[6] with A[5], interchange (swap) 15 and 5
[40, 50, 10, 35, 90, 5, 15, 60] //A[5] and A[4], swap 90 with 5
[40, 50, 10, 35, 5, 90, 15, 60] //A[4] with A[3], 35 swap with 5
[40, 50, 10, 5, 35, 90, 15, 60] //A[3] with A[2], 10 swap with 5
[40, 50, 5, 10, 35, 90, 15, 60] //A[2] with A[1], 50 swap with 5
[40, 5, 50, 10, 35, 90, 15, 60] //A[1] with A[0], 40 swap with 5
[5, 40, 50, 10, 35, 90, 15, 60] //The smallest element 5 is in its proper position

Following the initial parsing, the smallest element has been placed correctly.

Parse 02

[5, 10, 40, 50, 15, 35, 90, 60] //Here, 10 is its proper position

Parse 03

[5, 10, 15, 40, 50, 35, 60, 90] //15 is its proper position

Parse 04

[5, 10, 15, 35, 40 , 50, 60, 90] //35 is its proper position

Parse 05

[5, 10, 15, 35, 40 , 50, 60, 90] //40 is its proper position

Parse 06

[5, 10, 15, 35, 40 , 50, 60, 90] //50 is its proper position

Parse 07

[5, 10, 15, 35, 40 , 50, 60, 90] //60 is its proper position
[5, 10, 15, 35, 40 , 50, 60, 90] //Sorted list

Bubble Sort Algorithm

BubbleSort(A[]){
    for (index=0; i<A.length-1; i++){
        for (j=A.length-1; j>i; --j){
            swap elements in positions j and j-1 if they out of order;
        }
    }
}

Bubble Sort running time analysis is O(n²)