冒泡排序(bubble_sort)——Python实现

# 冒泡排序

# 作用:对给出的n个顺序不定的数进行排序

# 输入:任意数组A

# 输出:按顺序排列的数组A

# 冒泡排序过程

# 第一趟:以第一个数为基准,从最后一位数开始,依次与它比较,

#               若大于它,则交换,若小于它,则继续判断前一个数

#               完成一趟后,这个基准数(即第一个数)是所有数里最大的

# 第二趟:以第二个数为基准,从最后一位数开始,依次与它比较,

#               若大于它,则交换,若小于它,则继续判断前一个数

#               完成一趟后,这个基准数(即第二个数)是除了第一个数之外最大的

# 以此类推,直到以最后一个数位基准时,得到倒序的数组

 1 # 在此修改初始数据
 2 A = [12,56,92,-1,5,110,92,999,-39,21,76,33,56]
 3
 4 print(‘您的初始数据为:‘)
 5 print(A);print(‘\n‘*1)      # print(‘\n‘*1) 意思为空一行,仅起使输出美观的作用
 6 n = len(A)          # 用n获取数组长度
 7 i = 0               # 外循环时数组的下标
 8 j = n-1             # 内循环时数组的下标
 9
10 while i <= n-1:
11     while j != i:
12         if A[j] > A[i]:
13             temp = A[i]
14             A[i] = A[j]
15             A[j] = temp
16             j = j - 1
17         else:
18             j = j - 1
19     j = n -1        # 重置j,使得下次循环能j能从最后一个数开始
20     i = i + 1       # 完成一次循环后,第i个数已被确定,是当前剩余的数中最大的
21     print(A)
22
23 print(‘\n‘*1)
24 print(‘冒泡排序的结果:‘)       # 输出的数据是逆向排序的
25 print(A)
26
27 A.reverse()         # python自带的函数,使逆序
28 print(‘取倒序后数据为:‘)
29 print(A)

运行结果:

您的初始数据为:
[12, 56, 92, -1, 5, 110, 92, 999, -39, 21, 76, 33, 56]
冒泡排序的结果:
[999, 110, 92, 92, 76, 56, 56, 33, 21, 12, 5, -1, -39]
取倒序后数据为:
[-39, -1, 5, 12, 21, 33, 56, 56, 76, 92, 92, 110, 999]

该算法具体实现过程中数组A的变化情况:

其中,下划线___表示的是在每一趟(每一次外循环)确定下来的数

 1 [999, 56, 92, -1, 5, 110, 92, 76, -39, 21, 56, 33, 12]
 2 [999, 110, 92, -1, 5, 92, 76, 56, -39, 21, 56, 33, 12]
 3 [999, 110, 92, -1, 5, 92, 76, 56, -39, 21, 56, 33, 12]
 4 [999, 110, 92, 92, 5, 76, 56, 56, -39, 21, 33, 12, -1]
 5 [999, 110, 92, 92, 76, 56, 56, 33, -39, 21, 12, 5, -1]
 6 [999, 110, 92, 92, 76, 56, 56, 33, -39, 21, 12, 5, -1]
 7 [999, 110, 92, 92, 76, 56, 56, 33, -39, 21, 12, 5, -1]
 8 [999, 110, 92, 92, 76, 56, 56, 33, -39, 21, 12, 5, -1]
 9 [999, 110, 92, 92, 76, 56, 56, 33, 21, 12, 5, -1, -39]
10 [999, 110, 92, 92, 76, 56, 56, 33, 21, 12, 5, -1, -39]
11 [999, 110, 92, 92, 76, 56, 56, 33, 21, 12, 5, -1, -39]
12 [999, 110, 92, 92, 76, 56, 56, 33, 21, 12, 5, -1, -39]
13 [999, 110, 92, 92, 76, 56, 56, 33, 21, 12, 5, -1, -39]

简而言之,冒泡排序法就是每次找出剩余的数中最大的一个,并按顺序存储下来。

原文地址:https://www.cnblogs.com/aiyou-3344520/p/11706313.html

时间: 2024-10-14 20:34:35

冒泡排序(bubble_sort)——Python实现的相关文章

算法:冒泡排序(python版)

1.将n个元素从大到小排序后,选择第k个大的元素 #!/usr/bin/env python #coding -*- utf:8 -*- #冒泡排序选第k个元素 import random import time def select_k(): n = int(input("所要生成的数组的长度:")) arraya = [] for i in range(n): x = random.choice(range(100)) arraya.append(x) print("所生

数据结构-冒泡排序(Python&amp;java实现)

1. 冒泡算法的核心思想冒泡排序的核心思想就是扫描数据清单,找到乱序的两个相邻的数据进行两两比较并交换位置,然后继续扫描数据,接着反复重复上述的操作直至排序结束.2. 示例我们以23,15,58,-4,99,0这组无序的数字为例:例子为从小到大排序,初始状态:23,15,58, -4,99,0第一次排序结果:15,23,-4,58,0,99第二次排序结果:15,-4,23,0,58,99第三次排序结果:-4,15,0,23,58,99第四次排序结果:-4,0,15,23,58,99第五次排序结果

冒泡排序(python实现)

思想:从第一个开始往后进行比较大小,如果大,互相交换位置,继续往后比较,如果小,进行下一个元素的比较(也是顺序的比较大小). def bubble_sort(sort_list): """冒泡排序""" n = len(sort_list) # 每个元素都需要在list中比较一遍,最差情况为O(n*n) for j in range(0, n-1): count = 0 # 当前元素在序列中进行排序 for i in range(0, n-1-j

冒泡排序之python

冒泡排序(Bubble sort) 两两比较相邻记录的关键字,如果反序则交换,直到没有反序记录为止. 1.算法描述: 比较相邻的元素.如果第一个比第二个大,就交换它们两个: 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数: 针对所有的元素重复以上的步骤,除了最后一个: 重复步骤1~3,直到排序完成. 2.算法属性: 时间复杂度O(n^2) O(1) :额外的空间  (best case:在列表本来就拍好序的情况) O(n2 ) :比较和交换 适应性:

冒泡排序算法-python实现

1 ''' 2 冒泡排序算法及其优化 3 冒泡排序的基本特征是只能交换相邻的元素. 4 从下边界开始,一趟扫描下来,可以把当前最大值顶到上边界: 5 如果没有发生交换操作,则表示数组是有序的. 6 ''' 7 8 9 # 算法一:基本冒泡排序 10 def BubbleSort_1(arr): 11 # 外层循环累计排序轮数,同时控制待排序数组的上边界,即A[0..i]为待排序部分 12 # 内层循环扫描A[0..i-1],比较相邻元素,并通过交换元素值的方式将最大值顶到最上方 13 for i

冒泡排序Bubble_Sort

基本原理:对于冒泡排序来说,基本思想是从第一个元素开始,数组中的数据依次和它后面相邻的数据进行比较,即1和2比较,2和3比较,a和a+1比较,直到倒数第二位和倒数第一位的比较,如果顺序不对就进行交换,这样一次下来最大的元素会被放置在最后的位置上[以升序为例,这里是理解冒泡排序的重点.]接着,在进行一次这样的排序,只不过到倒数第二就截止.最后呢就剩第一位置的元素和第二位置的元素进行比较.这个应该比较好理解,就不上图了吧.不过如果有足够的时间,我还是愿意把图补上的. 时间复杂度:显然是O(n^2)

冒泡排序(python版)

实现源码 def bubble(array): flag = len(array)-1 while flag >0: iter = 0 for i in range(flag): if array[i] > array[i+1]: array[i], array[i+1]= array[i+1],array[i] iter=i flag = iter array = [5,3,18,99,8,2,8] if __name__ == "__main__": bubble(ar

冒泡排序的python代码实现

li = [33, 2, 10, 1,564,880,8,99,51,3]# for i in range(len(li) - 1):#     current = li[i]#     next_value = li[i + 1]#     if li[i] > li[i + 1]:#         temp = li[i]#         li[i] = li[i + 1]#         li[i + 1] = temp# print(li)## for i in range(len

排序算法之冒泡排序

冒泡排序 #include <stdio.h> void bubble_sort(int a[],int n) { int i,j,temp; for(i = 0; i < n-1; i++) for(j = 0; j < n-1-i; j++) if(a[j] > a[j+1]) { temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } return ; } int main(void) { int i; int a[5] = {8,3,

python随笔目录

线程池 python内置的全局变量 冒泡排序的python代码实现