Введение в алгоритм пузырьковой сортировки

Введение в алгоритм пузырьковой сортировки

Сортировка - одна из самых простых операций, которые вы можете применить к данным. Вы можете сортировать элементы на разных языках программирования, используя различные алгоритмы сортировки, такие как быстрая сортировка, пузырьковая сортировка, сортировка слиянием, сортировка вставкой и т. Д. Пузырьковая сортировка - самый простой алгоритм среди всех этих.





В этой статье вы узнаете о работе алгоритма пузырьковой сортировки, псевдокоде алгоритма пузырьковой сортировки, его временной и пространственной сложности и его реализации на различных языках программирования, таких как C ++, Python, C и JavaScript.





Как работает алгоритм пузырьковой сортировки?

Пузырьковая сортировка - это простейший алгоритм сортировки, который многократно проходит по списку, сравнивает соседние элементы и меняет их местами, если они расположены в неправильном порядке. Более эффективно эту концепцию можно пояснить на примере. Рассмотрим несортированный массив со следующими элементами: {16, 12, 15, 13, 19}.





Пример:

Здесь сравниваются соседние элементы, и, если они не в порядке возрастания, они меняются местами.



Псевдокод алгоритма пузырьковой сортировки

В псевдокоде алгоритм пузырьковой сортировки может быть выражен как:

bubbleSort(Arr[], size)
// loop to access each array element
for i=0 to size-1 do:
// loop to compare array elements
for j=0 to size-i-1 do:
// compare the adjacent elements
if Arr[j] > Arr[j+1] then
// swap them
swap(Arr[j], Arr[j+1])
end if
end for
end for
end

Вышеупомянутый алгоритм обрабатывает все сравнения, даже если массив уже отсортирован. Его можно дополнительно оптимизировать, остановив алгоритм, если внутренний цикл не вызвал подкачки. Это сократит время выполнения алгоритма.





Таким образом, псевдокод оптимизированного алгоритма пузырьковой сортировки можно выразить как:

bubbleSort(Arr[], size)
// loop to access each array element
for i=0 to size-1 do:
// check if swapping occurs
swapped = false
// loop to compare array elements
for j=0 to size-i-1 do:
// compare the adjacent elements
if Arr[j] > Arr[j+1] then
// swap them
swap(Arr[j], Arr[j+1])
swapped = true
end if
end for
// if no elements were swapped that means the array is sorted now, then break the loop.
if(not swapped) then
break
end if
end for
end

Временная сложность и вспомогательное пространство алгоритма пузырьковой сортировки

Наихудшая временная сложность алгоритма пузырьковой сортировки составляет O (n ^ 2). Это происходит, когда массив находится в порядке убывания, и вы хотите отсортировать его в порядке возрастания или наоборот.





как перевести Apple Pay в банк

Оптимальная временная сложность алгоритма пузырьковой сортировки составляет O (n). Это происходит, когда массив уже отсортирован.

безопасно ли покупать g2a?

Связанный: Что такое нотация Big-O?

Средняя временная сложность алгоритма пузырьковой сортировки составляет O (n ^ 2). Это происходит, когда элементы массива находятся в беспорядочном порядке.

Вспомогательное пространство, необходимое для алгоритма пузырьковой сортировки, составляет O (1).

Реализация алгоритма пузырьковой сортировки на C ++

Ниже представлена ​​реализация алгоритма пузырьковой сортировки на C ++:

// C++ implementation of the
// optimised Bubble Sort algorithm
#include
using namespace std;
// Function to perform Bubble Sort
void bubbleSort(int arr[], int size) {
// Loop to access each element of the array
for (int i=0; i<(size-1); i++) {
// Variable to check if swapping occurs
bool swapped = false;
// loop to compare two adjacent elements of the array
for (int j = 0; j <(size-i-1); j++) {
// Comparing two adjacent array elements
if (arr[j] > arr[j + 1]) {
// Swap both elements if they're
// not in correct order
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
swapped = true;
}
}
// If no elements were swapped that means the array is sorted now,
// then break the loop.
if (swapped == false) {
break;
}
}
}
// Prints the elements of the array
void printArray(int arr[], int size) {
for (int i = 0; i cout << arr[i] << ' ';
}
cout << endl;
}
int main() {
int arr[] = {16, 12, 15, 13, 19};
// Finding the length of the array
int size = sizeof(arr) / sizeof(arr[0]);
// Printing the given unsorted array
cout << 'Unsorted Array: ' << endl;
printArray(arr, size);
// Calling bubbleSort() function
bubbleSort(arr, size);
// Printing the sorted array
cout << 'Sorted Array in Ascending Order:' << endl;
printArray(arr, size);
return 0;
}

Выход:

Unsorted Array:
16 12 15 13 19
Sorted Array in Ascending Order:
12 13 15 16 19

Реализация алгоритма пузырьковой сортировки на Python

Ниже представлена ​​реализация алгоритма пузырьковой сортировки на Python:

# Python implementation of the
# optimised Bubble Sort algorithm

# Function to perform Bubble Sort
def bubbleSort(arr, size):
# Loop to access each element of the list
for i in range (size-1):
# Variable to check if swapping occurs
swapped = False
# loop to compare two adjacent elements of the list
for j in range(size-i-1):
# Comparing two adjacent list elements
if arr[j] > arr[j+1]:
temp = arr[j]
arr[j] = arr[j+1]
arr[j+1] = temp
swapped = True
# If no elements were swapped that means the list is sorted now,
# then break the loop.
if swapped == False:
break
# Prints the elements of the list
def printArray(arr):
for element in arr:
print(element, end=' ')
print('')

arr = [16, 12, 15, 13, 19]
# Finding the length of the list
size = len(arr)
# Printing the given unsorted list
print('Unsorted List:')
printArray(arr)
# Calling bubbleSort() function
bubbleSort(arr, size)
# Printing the sorted list
print('Sorted List in Ascending Order:')
printArray(arr)

Выход:

Unsorted List:
16 12 15 13 19
Sorted List in Ascending Order:
12 13 15 16 19

Связанный: Как использовать циклы For в Python

C Реализация алгоритма пузырьковой сортировки

Ниже представлена ​​реализация алгоритма пузырьковой сортировки на языке C:

// C implementation of the
// optimised Bubble Sort algorithm
#include
#include
// Function to perform Bubble Sort
void bubbleSort(int arr[], int size) {
// Loop to access each element of the array
for (int i=0; i<(size-1); i++) {
// Variable to check if swapping occurs
bool swapped = false;
// loop to compare two adjacent elements of the array
for (int j = 0; j <(size-i-1); j++) {
// Comparing two adjacent array elements
if (arr[j] > arr[j + 1]) {
// Swap both elements if they're
// not in correct order
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
swapped = true;
}
}
// If no elements were swapped that means the array is sorted now,
// then break the loop.
if (swapped == false) {
break;
}
}
}
// Prints the elements of the array
void printArray(int arr[], int size) {
for (int i = 0; i printf('%d ', arr[i]);
}
printf(' ⁠n ');
}
int main() {
int arr[] = {16, 12, 15, 13, 19};
// Finding the length of the array
int size = sizeof(arr) / sizeof(arr[0]);
// Printing the given unsorted array
printf('Unsorted Array: ⁠n');
printArray(arr, size);
// Calling bubbleSort() function
bubbleSort(arr, size);
// Printing the sorted array
printf('Sorted Array in Ascending Order: ⁠n');
printArray(arr, size);
return 0;
}

Выход:

Unsorted Array:
16 12 15 13 19
Sorted Array in Ascending Order:
12 13 15 16 19

Реализация алгоритма пузырьковой сортировки в JavaScript

Ниже представлена ​​реализация алгоритма пузырьковой сортировки в JavaScript:

// JavaScript implementation of the
// optimised Bubble Sort algorithm
// Function to perform Bubble Sort
function bubbleSort(arr, size) {
// Loop to access each element of the array
for(let i=0; i // Variable to check if swapping occurs
var swapped = false;
// loop to compare two adjacent elements of the array
for(let j=0; j // Comparing two adjacent array elements
if(arr[j] > arr[j+1]) {
// Swap both elements if they're
// not in correct order
let temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
swapped = true;
}
// If no elements were swapped that means the array is sorted now,
// then break the loop.
if (swapped == false) {
break;
}
}
}
}
// Prints the elements of the array
function printArray(arr, size) {
for (let i=0; i document.write(arr[i] + ' ');
}
document.write('
')
}

var arr = [16, 12, 15, 13, 19];
// Finding the length of the array
var size = arr.length;
// Printing the given unsorted array
document.write('Unsorted Array:
');
printArray(arr, size);
// Calling bubbleSort() function
bubbleSort(arr, size);
// Printing the sorted array
document.write('Sorted Array in Ascending Order:
');
printArray(arr, size);

Выход:

Unsorted Array:
16 12 15 13 19
Sorted Array in Ascending Order:
12 15 13 16 19

Теперь вы понимаете работу алгоритма пузырьковой сортировки

Пузырьковая сортировка - это простейший алгоритм сортировки, который в основном используется для понимания основ сортировки. Пузырьковая сортировка также может быть реализована рекурсивно, но не дает никаких дополнительных преимуществ.

Используя Python, вы можете легко реализовать алгоритм пузырьковой сортировки. Если вы не знакомы с Python и хотите начать свое путешествие, отличный выбор - начать со сценария Hello World.

Делиться Делиться Твитнуть Эл. адрес Как начать работу с Python с помощью скрипта Hello World

Python - один из самых популярных языков программирования, используемых сегодня. Следуйте этому руководству, чтобы начать работу с вашим самым первым скриптом Python.

Читать далее
Похожие темы
  • Программирование
  • Джава
  • Python
  • Учебники по кодированию
Об авторе Юврадж Чандра(Опубликовано 60 статей)

Юврадж - студент бакалавриата по информатике в Университете Дели, Индия. Он увлечен веб-разработкой Full Stack. Когда он не пишет, он исследует глубину различных технологий.

как перевести iphone 6 в режим рекавери
Ещё от Yuvraj Chandra

Подписывайтесь на нашу новостную рассылку

Подпишитесь на нашу рассылку технических советов, обзоров, бесплатных электронных книг и эксклюзивных предложений!

Нажмите здесь, чтобы подписаться