Python——冒泡算法

冒泡算法:对于要排序的序列,每次将两个元素进行比较,如果排序错误则将两者进行交换,直到完成排序。

 
以数列 li = [12,22,3,11,8,10] 为例:

for m in range(len(li)-1):    for n in range(m+1,len(li)):        if li[m] > li[n]:            temp = li[n]            li[n] = li[m]            li[m] = tempprint li
for n in range(1,len(li)-1):    for m in range(len(li)-n):        num1 = li[m]        num2 = li[m + 1]        if num1 > num2:            temp = li[m]            li[m] = num2            li[m + 1] = tempprint li
 
两者的区别在于,前者从前往后排序,从小的值开始排序,最后排序的是大的值;后者是从后往前排序,从大的值开始排序,最后排序的是小的值
 
以第二种方法进行详细分解
for m in range(5):    num1 = li[m]    num2 = li[m+1]    if num1 > num2:        temp = li[m]        li[m] = num2        li[m+1] = tempprint li
列表一共6个元素,需要比较5次,两两进行比较后,得到新的序列,最大的值排在最后一个。

for m in range(4):    num1 = li[m]    num2 = li[m+1]    if num1 > num2:        temp = li[m]        li[m] = num2        li[m+1] = tempprint li
再次进行循环,由于最后一个元素已经为最大值,只需要比较前5个,从而得到第二大的值。以此类推,可以发现range中的值从len(li-1)开始依次减1,因此可以再套一层for循环。
 
for n in range(1,len(li)-1):
    #n为1,2,3,4,5
    #len(li)-n则为5,4,3,2,1    for m in range(len(li)-n):        num1 = li[m]        num2 = li[m + 1]        if num1 > num2:            temp = li[m]            li[m] = num2            li[m + 1] = tempprint li
时间: 2024-12-15 06:45:45

Python——冒泡算法的相关文章

python 冒泡算法

使用python进行冒泡算法对给定列表进行排序 其中需要注意的一点就是调换值的位置,位置调换不能通过索引直接赋值,需要引入一个临时变量来完成 一下的例子是进行升序排序,如果需要进行降序排序,将其中的比较符'>'换为'<'即可 li = [33,2,10,1,123,123,557,5,3422,13123,88] print(li) #先打印一下需要排序的列表 for j in range(1,len(li)): #控制循环次数 for i in range(len(li)-1): #每次循环

python冒泡算法,lambda表达式

======================================================================== 冒泡算法 (个人理解类似于IP互换方案方式,或者被老师成为小鱼冒泡泡) 如何将列表内的数字进行排序呢? 方法1(需要递归) li =[5,4,3,2,6]                 #定义一个列表 print li                            #调试打印出列表 for m in range(4):          #通

python冒泡算法

array = [1,2,3,6,5,4,28,2,1,9,3,0,200,2,9,3,2,98,33,988,22,0,223,0,33,78,222,88,32,0,238,883,2,0,23] for i in range(len(array)):     for j in range(i):         if array[j] > array[j + 1]:             for jj in range(i):                 if array[jj] >

python排序算法实现(冒泡、选择、插入)

python排序算法实现(冒泡.选择.插入) python 从小到大排序 1.冒泡排序: O(n2) s=[3,4,2,5,1,9] #count = 0 for i in range(len(s)): for j in range((i+1),len(s)): s[i],s[j]=min(s[i],s[j]),max(s[i],s[j]) #print count print s 2.选择排序: O(n2) s=[3,4,2,5,1,9] #count = 0 for i in range(l

Python 第五篇:冒泡算法、系统标准模块

一:冒泡算法,也叫冒泡排序,其特点如下: 1.比较相邻的元素.如果第一个比第二个大,就交换他们两个. 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 3.针对所有的元素重复以上的步骤,除了最后一个. 4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较. 使用python的冒泡排序完成一组无序队列的排序: data = [10,4,33,21,54,3,8,11,5,22,2,2,2,1,17,13,6] print(d

python模块之re,os,sys。冒泡算法和反射。

python内置模块之(os,sys,hashlib,re) os模块 1 os.path.dirname() # 获取文件的上一层目录名,其实就是os.path.split(path)的第一个元素 2 os.path.abspath() # 获取文件的绝对路径,包括文件名 3 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 4 os.chdir("dirname") 改变当前脚本工作目录:相当于shell下cd 5 os.curdir 返回当前目录:

Python函数之冒泡算法

冒泡算法 1. data = [4,3,2,1] count = 0 for i in range(0, len(data)): #len(data)代表的是列表的总长度 #取外层函数的第一个值进行循环 for j in range(i + 1, len(data)): #把外层循环的第一个值跟所有的内层循环的值比较一遍,并跟换位置,沉低 count += 1 if data[j] < data[i]: tmp = data[j] data[j] = data[i] data[i] = tmp

Python之冒泡算法

有如下列表,要求从左到右顺序排序 li = [13,22,6,99,11] 实现方法: li = [13,22,6,99,11]print "##########原始数字顺序################"print liprint "#########开始第一次排序############3"for m in range(4):    num1 = li[m]    num2 = li[m+1]    if num1>num2:       tmp = l

Python函数练习:冒泡算法+快速排序(二分法)

冒泡算法: #-*- coding: UTF-8 -*-#冒泡排序 def func(lt): if type(lt).__name__ !='list' and type(lt).__name__ !='tuple': return if type(lt).__name__ == 'tuple': return list(lt) for i in range(1,len(lt)-1): for j in range(1,len(lt)-i): if lt[j] > lt[j+1]: lt[j]