基础算法:冒泡排序的Python代码实现。

基础算法:冒泡排序的Python代码实现。,第1张

基础算法:冒泡排序的Python代码实现。

目录

思路Code运行结果swap()函数的详细讲解。

思路

冒泡排序重复地走访需要排序的元素列表,依次比较两个相邻的元素,如果顺序(如从大到小或从小到大)错误就交换它们的位置。重复地进行直到没有相邻的元素需要交换,则元素列表排序完成。
比如一个数组的长度为6,那么索引就从0到5;然后首先是从0到5的区间,判断0与1,1与2,2与3,3与4,4与5的索引的大小,如果每次后面的数值比前面的数值小,交换;然后看0到4的区间
;以此往复。最终实现冒泡排序。

Code
# -*- coding:UTF-8 -*-
"""
@Project :左神算法Python源码
@File    :冒泡排序.py
@IDE     :PyCharm
@Author  :Kinght_123
@Date    :2022/1/8 10:08
"""


# 冒泡排序
def Bubble_sort(array):
    if not array or len(array) < 2:
        return
    for i in range(len(array), -1, -1):
        for j in range(0, i - 1):
            if array[j] > array[j + 1]:
                # array[j], array[j + 1] = array[j + 1], array[j]
                swap(array, j, j + 1)
    return array


def swap(array, i, j):  # 利用异或的性质
    array[i] = array[i] ^ array[j]
    array[j] = array[i] ^ array[j]
    array[i] = array[i] ^ array[j]


if __name__ == '__main__':
    ls = [6, 7, 8, 10, 3, 2, 1, 0]
    print(Bubble_sort(ls))

运行结果
[0, 1, 2, 3, 6, 7, 8, 10]
swap()函数的详细讲解。

首先需要知道异或的性质。不同的数字异或为1,相同的数字异或为0。我们可以理解为无进位相加。然后异或具有交换律,0异或一个数等于一个数本身,两个相同的数异或等于0。所以我们可以推出如下图所示的交换方法。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5700572.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-17
下一篇2022-12-17

发表评论

登录后才能评论

评论列表(0条)

    保存