[Python-算法]python达成冒泡,插入,选拔排序

冒泡排序和选取排序

从新初始学习数据结交涉算法,在此之前从不系统学过。

 

 

先是引述一下百度健全对于冒泡算法的定义:

[python] 
# -*- coding: cp936 -*-  
#python插入排序  
def insertSort(a): 
    for i in range(len(a)-1): 
        #print a,i    
        for j in range(i+1,len(a)): 
            if a[i]>a[j]: 
                temp = a[i] 
                a[i] = a[j] 
                a[j] = temp 
    return a 
 
 
#Python的冒泡排序     
def bubbleSort(alist): 
    for passnum in range(len(alist)-1,0,-1): 
        #print alist,passnum  
        for i in range(passnum): 
            if alist[i]>alist[i+1]: 
                temp = alist[i] 
                alist[i] = alist[i+1] 
                alist[i+1] = temp 
    return alist 
 
 
#Python的采用排序   
def selectionSort(alist): 
    for i in range(len(alist)-1,0,-1): 
        maxone = 0 
        for j in range(1,i+1): 
            if alist[j]>alist[maxone]: 
                maxone = j 
        temp = alist[i]  
        alist[i] = alist[maxone] 
        alist[maxone] = temp  
    return alist 
 
 
alist = [54,26,93,17,77,31,44,55,20] 
#print bubbleSort(alist)  
alist = [54,26,93,17,77,31,44,55,20] 
print selectionSort(alist) 

 

# -*- coding: cp936 -*-
#python插入排序
def insertSort(a):
    for i in range(len(a)-1):
        #print a,i 
        for j in range(i+1,len(a)):
            if a[i]>a[j]:
                temp = a[i]
                a[i] = a[j]
                a[j] = temp
    return a

冒泡排序算法的法则如下:

#Python的冒泡排序  
def bubbleSort(alist):
    for passnum in range(len(alist)-1,0,-1):
        #print alist,passnum
        for i in range(passnum):
            if alist[i]>alist[i+1]:
                temp = alist[i]
                alist[i] = alist[i+1]
                alist[i+1] = temp
    return alist

  1. 比较相邻的成分。假如第2个比第贰个大,就交流他们三个。

  2. 对每一对周围成分做同样的行事,从开首首先对到最后的末段1对。在那或多或少,最后的因素应该会是最大的数。

  3. 本着具备的要素重复以上的手续,除了最终三个。

  4. 绵绵每一次对越来越少的成分重复上边的手续,直到未有任何一对数字须要比较。

#Python的接纳排序
def selectionSort(alist):
    for i in range(len(alist)-1,0,-1):
        maxone = 0
        for j in range(1,i+1):
            if alist[j]>alist[maxone]:
                maxone = j
        temp = alist[i]
        alist[i] = alist[maxone]
        alist[maxone] = temp
    return alist

 

alist = [54,26,93,17,77,31,44,55,20]
#print bubbleSort(alist)
alist = [54,26,93,17,77,31,44,55,20]
print selectionSort(alist)

在看不固然理器语言中冒泡算法都以1种优异的排序算法,在python中也得以轻易完毕,并且代码越来越短,上边看代码:

 

#冒泡排序
def bubble_sort(lt):
    for i in range(len(lt)-1):         #外部循环,用来表示冒泡进行的次数
        for j in range(len(lt)-i-1):
        #内部循环,如果从下标为0的元素开始匹配,j下标一直到倒数第二个元素
            if lt[j] > lt[j+1]:
                lt[j], lt[j+1] = lt[j+1], lt[j]
                #上面两行代码-如果lt列表中下标为j的值大于下标为j+1的值,
                #就调换位置,相当于lt[j] = lt[j+1], lt[j+1] = lt[j]
    print(lt)     #打印列表
lt = [9, 8, 6, 4, 5, 1, 3, 10]    #首先建一个列表
bubble_sort(lt)  #调用函数输出经过冒泡排序后的列表

http://www.bkjia.com/Pythonjc/514447.htmlwww.bkjia.comtruehttp://www.bkjia.com/Pythonjc/514447.htmlTechArticle从新开始学习数据结构和算法,从前没有系统学过。
[python] # -*- coding: cp936 -*- #python插入排序 def
insertSort(a): for i in range(len(a)-壹): #print a,i f…

选择排序:相比较数组中前多少个成分跟后贰个成分的大小,倘使前面包车型地铁因素比前面包车型地铁要素小则用1个变量k来记住他的岗位,接着第三回相比,前边“后三个成分”现形成了“前2个因素”,继续跟她的“后3个要素”实行相比较若是前面的成分比她要小则用变量k记住它在数组中的地方(下标),等到循环结束的时候,大家理应找到了小小的卓殊数的下标了,然后开始展览判别,若是那一个元素的下标不是首先个因素的下标,就让第1个因素跟他调换一下值,那样就找到任何数组中型小型小的的数了。然后找到数组中第叁小的数,让他跟数组中第2个因素调换一下值,就那样推算。

#选择排序
list1 = [12, 3, 6, 2, 5, 7, 8, 9] #首先定义一个列表
def quick_sort(list1):
    for i in range(len(list1)-1): #默认从0下标开始
        x = i   #建立一个信号量
        for j in range(i+1, len(list1)):#从列表第i+1个元素开始
            if list1[x] > list1[j]:#一旦匹配到小于下标为i的元素
                x = j
        list1[i], list1[x] = list1[x], list1[i]
        #将元素赋值给信号量x,依次循环,遇到更小的,继续交换元素
    print(list1)
quick_sort(list1)

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图