算法冒泡排序与封装接构

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法冒泡排序与封装接构相关的知识,希望对你有一定的参考价值。

冒泡排序


冒泡排序是相近的两个数字两两比较,然后按照从小到大或者从大到小的顺序排列



比如有两个数字A,B, A = 3 , B = 2,A 比 B 大,则A 和 B 位置发生交换,顺序变成了 B,A,详细过程看输出结果就很清晰了。




升序排序的代码如下:

lst1 = [[1, 9, 8, 5, 6, 7, 4, 3, 2],
        [1, 2, 3, 4, 5, 6, 7, 8, 9]]
lst = lst1[0]
lenth = len(lst)
#升序
count_swap = 0
for i in range(lenth):
    flag = False   #标记
    for j in range(lenth - 1):
        if lst[j] > lst[j + 1]:
            lst[j], lst[j + 1] = lst[j + 1], lst[j]
            flag = True  #如果发生交换,标记设为True
            count_swap += 1
            print(lst)
    if not flag:   #not flag表示flag=False,即没有发生交换,表示全部列表已经排序完成,终止循环
        break
print(lst)  #输出排序结果
print(count_swap)


输出结果:

[1, 8, 9, 5, 6, 7, 4, 3, 2]
[1, 8, 5, 9, 6, 7, 4, 3, 2]
[1, 8, 5, 6, 9, 7, 4, 3, 2]
[1, 8, 5, 6, 7, 9, 4, 3, 2]
[1, 8, 5, 6, 7, 4, 9, 3, 2]
[1, 8, 5, 6, 7, 4, 3, 9, 2]
[1, 8, 5, 6, 7, 4, 3, 2, 9]
[1, 5, 8, 6, 7, 4, 3, 2, 9]
[1, 5, 6, 8, 7, 4, 3, 2, 9]
[1, 5, 6, 7, 8, 4, 3, 2, 9]
[1, 5, 6, 7, 4, 8, 3, 2, 9]
[1, 5, 6, 7, 4, 3, 8, 2, 9]
[1, 5, 6, 7, 4, 3, 2, 8, 9]
[1, 5, 6, 4, 7, 3, 2, 8, 9]
[1, 5, 6, 4, 3, 7, 2, 8, 9]
[1, 5, 6, 4, 3, 2, 7, 8, 9]
[1, 5, 4, 6, 3, 2, 7, 8, 9]
[1, 5, 4, 3, 6, 2, 7, 8, 9]
[1, 5, 4, 3, 2, 6, 7, 8, 9]
[1, 4, 5, 3, 2, 6, 7, 8, 9]
[1, 4, 3, 5, 2, 6, 7, 8, 9]
[1, 4, 3, 2, 5, 6, 7, 8, 9]
[1, 3, 4, 2, 5, 6, 7, 8, 9]
[1, 3, 2, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
25




降序排序的代码如下:

lst1 = [[1, 9, 8, 5, 6, 7, 4, 3, 2],
        [1, 2, 3, 4, 5, 6, 7, 8, 9]]
lst = lst1[0]
lenth = len(lst)
#降序
count_swap = 0  #交换次数
for i in range(lenth):
    flag = False   #标记
    for j in range(lenth - 1, 0, -1):
        if lst[j] > lst[j - 1]:
            lst[j], lst[j - 1] = lst[j - 1], lst[j]
            flag = True  #如果发生交换,标记设为True
            count_swap += 1  #发生交换,次数+1
            print(lst)
    if not flag:   #not flag表示flag=False,即没有发生交换,表示全部列表已经排序完成,终止循环
        break
print(lst)  #输出排序结果
print(count_swap)


#输出结果:

[1, 9, 8, 5, 7, 6, 4, 3, 2]
[1, 9, 8, 7, 5, 6, 4, 3, 2]
[9, 1, 8, 7, 5, 6, 4, 3, 2]
[9, 1, 8, 7, 6, 5, 4, 3, 2]
[9, 8, 1, 7, 6, 5, 4, 3, 2]
[9, 8, 7, 1, 6, 5, 4, 3, 2]
[9, 8, 7, 6, 1, 5, 4, 3, 2]
[9, 8, 7, 6, 5, 1, 4, 3, 2]
[9, 8, 7, 6, 5, 4, 1, 3, 2]
[9, 8, 7, 6, 5, 4, 3, 1, 2]
[9, 8, 7, 6, 5, 4, 3, 2, 1]
[9, 8, 7, 6, 5, 4, 3, 2, 1]
11


冒泡排序

选择排序

二元选择排序

插入排序

二叉树

















以上是关于算法冒泡排序与封装接构的主要内容,如果未能解决你的问题,请参考以下文章

数据结构与算法冒泡排序——JavaC++Python 中的算法示例代码

JavaScript算法(冒泡排序选择排序与插入排序)

python 数据结构与算法之排序(冒泡,选择,插入)

C++如何封装一个数组冒泡排序的方法

java冒泡排序和快速排序

Python数据结构与算法(12)---冒泡排序