Skip to content

Commit ba65c9c

Browse files
committed
sorting algorithm added
1 parent 4e755c4 commit ba65c9c

File tree

7 files changed

+1305
-0
lines changed

7 files changed

+1305
-0
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"label": "Sorting Algorithms",
3+
"position": 1,
4+
"link": {
5+
"type": "generated-index",
6+
"description": "In This section all the Sortingt Algorithms are defined in DSA "
7+
}
8+
}

dsa/Algorithms/Sorting/bubble-sort.md

Lines changed: 179 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,179 @@
1+
---
2+
id: bubble-sort
3+
title: Bubble Sort
4+
sidebar_label: Bubble Sort
5+
tags: [python, java, c++, javascript, programming, algorithms, sorting, data structures, tutorial, in-depth]
6+
description: In this tutorial, we will learn about Bubble Sort and its implementation in Python, Java, C++, and JavaScript with detailed explanations and examples.
7+
---
8+
9+
# Bubble Sort
10+
11+
Bubble Sort is a simple comparison-based sorting algorithm. It is named for the way larger elements "bubble" to the top of the list. This tutorial will cover the basics of Bubble Sort, its applications, and how to implement it in Python, Java, C++, and JavaScript. We will also delve into various optimizations and advanced use cases.
12+
13+
## Introduction to Bubble Sort
14+
15+
Bubble Sort is an elementary algorithm suitable for small data sets. It repeatedly steps through the list, compares adjacent elements, and swaps them if they are in the wrong order. The pass through the list is repeated until the list is sorted.
16+
17+
## How Bubble Sort Works
18+
19+
- **Step 1**: Compare the first two elements of the array.
20+
- **Step 2**: If the first element is greater than the second, swap them.
21+
- **Step 3**: Move to the next pair of elements, compare them and swap if necessary.
22+
- **Step 4**: Continue this process for each pair of adjacent elements until the end of the array.
23+
- **Step 5**: Repeat the process for the entire array until no swaps are needed.
24+
25+
26+
![bubble sort](https://runestone.academy/ns/books/published/pythonds/_images/bubblepass.png)
27+
## Pseudocode for Bubble Sort
28+
29+
Here is the pseudocode for Bubble Sort:
30+
31+
```
32+
function bubbleSort(array):
33+
for i from 0 to length(array) - 1:
34+
for j from 0 to length(array) - i - 1:
35+
if array[j] > array[j + 1]:
36+
swap(array[j], array[j + 1])
37+
return array
38+
```
39+
40+
## Implementing Bubble Sort
41+
42+
### Python Implementation
43+
44+
```python
45+
def bubble_sort(array):
46+
n = len(array)
47+
for i in range(n):
48+
for j in range(0, n-i-1):
49+
if array[j] > array[j + 1]:
50+
array[j], array[j + 1] = array[j + 1], array[j]
51+
return array
52+
53+
arr = [64, 34, 25, 12, 22, 11, 90]
54+
print(bubble_sort(arr))
55+
```
56+
57+
### Java Implementation
58+
59+
```java
60+
public class BubbleSort {
61+
62+
public static void bubbleSort(int[] array) {
63+
int n = array.length;
64+
for (int i = 0; i < n-1; i++) {
65+
for (int j = 0; j < n-i-1; j++) {
66+
if (array[j] > array[j + 1]) {
67+
int temp = array[j];
68+
array[j] = array[j + 1];
69+
array[j + 1] = temp;
70+
}
71+
}
72+
}
73+
}
74+
75+
public static void main(String[] args) {
76+
int[] arr = {64, 34, 25, 12, 22, 11, 90};
77+
bubbleSort(arr);
78+
for (int num : arr) {
79+
System.out.print(num + " ");
80+
}
81+
}
82+
}
83+
```
84+
85+
### C++ Implementation
86+
87+
```cpp
88+
#include <iostream>
89+
using namespace std;
90+
91+
void bubbleSort(int array[], int length) {
92+
for (int i = 0; i < length-1; i++) {
93+
for (int j = 0; j < length-i-1; j++) {
94+
if (array[j] > array[j + 1]) {
95+
int temp = array[j];
96+
array[j] = array[j + 1];
97+
array[j + 1] = temp;
98+
}
99+
}
100+
}
101+
}
102+
103+
int main() {
104+
int arr[] = {64, 34, 25, 12, 22, 11, 90};
105+
int length = sizeof(arr) / sizeof(arr[0]);
106+
bubbleSort(arr, length);
107+
for (int i = 0; i < length; i++) {
108+
cout << arr[i] << " ";
109+
}
110+
return 0;
111+
}
112+
```
113+
114+
### JavaScript Implementation
115+
116+
```javascript
117+
function bubbleSort(array) {
118+
let n = array.length;
119+
for (let i = 0; i < n-1; i++) {
120+
for (let j = 0; j < n-i-1; j++) {
121+
if (array[j] > array[j + 1]) {
122+
let temp = array[j];
123+
array[j] = array[j + 1];
124+
array[j + 1] = temp;
125+
}
126+
}
127+
}
128+
return array;
129+
}
130+
131+
let arr = [64, 34, 25, 12, 22, 11, 90];
132+
console.log(bubbleSort(arr));
133+
```
134+
135+
## Time Complexity Analysis
136+
137+
- **Best Case**: $O(n)$ (when the array is already sorted)
138+
- **Worst Case**: $O(n^2)$ (when the array is sorted in reverse order)
139+
- **Average Case**: $O(n^2)$
140+
141+
## Space Complexity Analysis
142+
143+
- **Space Complexity**: $O(1)$ (since it sorts in place and requires only a constant amount of extra memory)
144+
145+
## Applications of Bubble Sort
146+
147+
- **Educational Tools**: Bubble Sort is often used as an introduction to sorting algorithms due to its simplicity.
148+
- **Small Data Sets**: Efficient for sorting small arrays or lists.
149+
- **Learning Tool**: Useful for educational purposes to understand the basics of sorting algorithms.
150+
151+
## Optimizations and Variations
152+
153+
### Optimized Bubble Sort
154+
155+
An optimized version of Bubble Sort can stop the algorithm if the inner loop didn’t cause any swap, indicating that the array is already sorted.
156+
157+
### Cocktail Shaker Sort
158+
159+
Cocktail Shaker Sort, also known as bidirectional Bubble Sort, extends Bubble Sort by operating in both directions on each pass through the list, first left to right, then right to left.
160+
161+
### Comb Sort
162+
163+
Comb Sort is an improvement on Bubble Sort. It eliminates turtles, or small values near the end of the list, since these slow the sorting process down. Comb Sort improves on Bubble Sort by using gaps in the comparison.
164+
165+
## Practical Considerations
166+
167+
### Stability
168+
169+
Bubble Sort is a stable sorting algorithm, meaning it maintains the relative order of equal elements.
170+
171+
### Use Cases
172+
173+
- Bubble Sort is used when the array size is small.
174+
- It is used when additional memory space is not available.
175+
- It is useful when the array is already partially sorted.
176+
177+
## Conclusion
178+
179+
In this tutorial, we covered the fundamentals of Bubble Sort, its implementation in Python, Java, C++, and JavaScript, and various optimizations and applications. Bubble Sort is a simple sorting algorithm, ideal for understanding basic sorting concepts and practicing algorithm implementation. By mastering Bubble Sort, you can effectively handle small sorting tasks in your projects.

0 commit comments

Comments
 (0)