Table of Contents
1. Algorithm description
6. Time complexity analysis
Home Backend Development Python Tutorial Detailed graphic explanation of Python bubble sort algorithm

Detailed graphic explanation of Python bubble sort algorithm

Jun 06, 2022 pm 07:21 PM
python

This article brings you relevant knowledge about python, which mainly introduces related issues about bubble sorting, including algorithm description, analysis, code implementation, etc. The following is Let's take a look, hope it helps everyone.

Detailed graphic explanation of Python bubble sort algorithm

Recommended learning: python video tutorial

1. Algorithm description

##Bubble Sort (Bubble Sort) is a simple sorting algorithm. It repeatedly iterates through the array to be sorted, comparing two elements at a time and swapping them if they are in the wrong order. The work of traversing the array is repeated until no more exchanges are needed, which means that the array has been sorted. The name of this algorithm comes from the fact that smaller elements will slowly "float" to the top of the array through swapping.

2. Algorithm analysis

1. Compare adjacent elements. If the first is greater than the second (in ascending order), swap them both.

#2. Do the same for each pair of adjacent elements, from the first pair at the beginning to the last pair at the end. After this step is completed, the final element will be the largest number.

3. Repeat the above steps for all elements except the last one.

4. Continue repeating the above steps for fewer and fewer elements each time until there are no pairs of numbers left. Need to compare.
Detailed graphic explanation of Python bubble sort algorithm Then we need to perform n-1 bubbling processes, and the corresponding number of comparisons for each time is as shown in the figure below:

Detailed graphic explanation of Python bubble sort algorithm

3. GIF display

Now that we understand the running process, let’s take a look at the GIF implementation:

Detailed graphic explanation of Python bubble sort algorithm

4. Code implementation

We sort the following unordered list


Detailed graphic explanation of Python bubble sort algorithm

Implementation code:

import timepop_list = [19, 14, 10, 4, 15, 26, 20, 96]print("没排序前的列表为:", pop_list)# 记录开始时间start = time.time()# 外层循环控制轮数for i in range(len(pop_list) - 1):
    # 内层循环控制比较次数
    for j in range(len(pop_list) - i - 1):
        # 如果前一个数字比后一个数字大,就交换位置
        if pop_list[j] > pop_list[j + 1]:
            # python特有交换位置方式
            pop_list[j], pop_list[j + 1] = pop_list[j + 1], pop_list[j]print("排序好的列表为:", pop_list)# 记录结束时间end = time.time()print("算法总耗时:", end - start)
Copy after login
Running result:

Detailed graphic explanation of Python bubble sort algorithm

5. Algorithm upgrade

A variable count is defined in the loop. If the first The count has not changed after the loop, which means that the input is an ordered sequence. At this time, we directly return to exit the loop. The time complexity at this time is

O(n)

Implementation code:

import timedef bubble_sort(pop_list):
    for j in range(len(pop_list) - 1, 0, -1):
        count = 0
        for i in range(0, j):
            if pop_list[i] > pop_list[i + 1]:
                pop_list[i], pop_list[i + 1] = pop_list[i + 1], pop_list[i]
                count += 1
        if count == 0:
            returnpop_list = [19, 14, 10, 4, 15, 26, 20, 96]print("没排序前的列表为:", pop_list)# 记录开始时间start = time.time()bubble_sort(pop_list)print("排序好的列表为:", pop_list)# 记录结束时间end = time.time()print("算法总耗时:", end - start)
Copy after login
Running results:


Detailed graphic explanation of Python bubble sort algorithm

6. Time complexity analysis

  • Optimum time complexity: O(n) (meaning that after traversing once, it is found that there is nothing that can be exchanged Elements, sorting ends.)
  • Worst time complexity: O(n^2)
  • Stability : Stable

  • # Sorting analysis: There are 8 numbers in the array to be sorted. 7 comparisons were made in the first round of sorting, and 7 comparisons were made in the second round of sorting. 6 comparisons were made, and so on, and 1 comparison was made in the last round.

  • When the total number of array elements is N, the total number of comparisons required is: (N-1) (N-2) (N-3 ) ...1=N*(N-1)/2

  • The algorithm does approximately N^2/2 comparisons. Because data is exchanged only when the preceding element is greater than the following element, the number of swaps is less than the number of comparisons. If the data is random and about half of the data needs to be exchanged, the number of exchanges is N^2/4 (but in the worst case, when the initial data is in reverse order, every comparison requires exchange) .

  • The number of exchange and comparison operations is proportional to N^2. Since in the big O notation, constants are ignored, the time of bubble sorting is complicated. The degree is O(N^2).

Recommended learning: python video tutorial

The above is the detailed content of Detailed graphic explanation of Python bubble sort algorithm. 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

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

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)

How to solve the permissions problem encountered when viewing Python version in Linux terminal? How to solve the permissions problem encountered when viewing Python version in Linux terminal? Apr 01, 2025 pm 05:09 PM

Solution to permission issues when viewing Python version in Linux terminal When you try to view Python version in Linux terminal, enter python...

How to efficiently copy the entire column of one DataFrame into another DataFrame with different structures in Python? How to efficiently copy the entire column of one DataFrame into another DataFrame with different structures in Python? Apr 01, 2025 pm 11:15 PM

When using Python's pandas library, how to copy whole columns between two DataFrames with different structures is a common problem. Suppose we have two Dats...

Can Python parameter annotations use strings? Can Python parameter annotations use strings? Apr 01, 2025 pm 08:39 PM

Alternative usage of Python parameter annotations In Python programming, parameter annotations are a very useful function that can help developers better understand and use functions...

Python hourglass graph drawing: How to avoid variable undefined errors? Python hourglass graph drawing: How to avoid variable undefined errors? Apr 01, 2025 pm 06:27 PM

Getting started with Python: Hourglass Graphic Drawing and Input Verification This article will solve the variable definition problem encountered by a Python novice in the hourglass Graphic Drawing Program. Code...

How to use Python and OCR technology to try to crack complex verification codes? How to use Python and OCR technology to try to crack complex verification codes? Apr 01, 2025 pm 10:18 PM

Exploration of cracking verification codes using Python In daily network interactions, verification codes are a common security mechanism to prevent malicious manipulation of automated programs...

How do Python scripts clear output to cursor position at a specific location? How do Python scripts clear output to cursor position at a specific location? Apr 01, 2025 pm 11:30 PM

How do Python scripts clear output to cursor position at a specific location? When writing Python scripts, it is common to clear the previous output to the cursor position...

Python Cross-platform Desktop Application Development: Which GUI Library is the best for you? Python Cross-platform Desktop Application Development: Which GUI Library is the best for you? Apr 01, 2025 pm 05:24 PM

Choice of Python Cross-platform desktop application development library Many Python developers want to develop desktop applications that can run on both Windows and Linux systems...

How to dynamically create an object through a string and call its methods in Python? How to dynamically create an object through a string and call its methods in Python? Apr 01, 2025 pm 11:18 PM

In Python, how to dynamically create an object through a string and call its methods? This is a common programming requirement, especially if it needs to be configured or run...

See all articles