**What you need:**

1) Unsorted array

2) for loop **i **- number of loop is based on the number of elements in the array. Each loop of **i** would reset loop of **j **to index zero.

3) for loop **j **- number of loop is based on number of loop **i **minus - 1 for every loop of **j**. Why? we are already sure that the last element of each loop is sorted and doesn't needed to be compared in the next loop (hence -1).

4) a variable to switch number. you don't need this in Python.

**Visualization:**

If you are wondering how i made this, i used **Numbers** App in my MacBook.

### Python program for implementation of Bubble Sort

```
def bubbleSort(arr):
n = len(arr)
# Traverse through all array elements
for i in range(n):
# Last i elements are already in place
for j in range(0, n-i-1):
# traverse the array from 0 to n-i-1
# Swap if the element found is greater
# than the next element
if arr[j] > arr[j+1] :
arr[j], arr[j+1] = arr[j+1], arr[j]
```

### Driver code to test above

```
arr = [64, 34, 25, 12, 22, 11, 90]
bubbleSort(arr)
print ("Sorted array is:")
for i in range(len(arr)):
print ("%d" %arr[i]),
```

Source for code: https://www.geeksforgeeks.org/bubble-sort/