利用python实现排序算法--交换排序、选择排序、冒泡排序

好多天都没写了,最近实在太忙了,今天抽空利用python把这三个排序算法实现一下。

一、交换排序

交换排序借鉴了求最小值的思想,n个数要比较n-1轮,每一轮都找出最大值或者最小值,但它的性能相对较低。

例如:列表a = [1,2,4,3,6,5,8](下面的排序都以这个为例)。

a = [1,2,4,3,6,5,8]
for i in range(0,len(a)-1):    #控制比较的轮数
    for j in range(i+1,len(a)):    #控制每轮比较的次数
        if a[i]<a[j]:    #从大到小排列     
            a[i],a[j] = a[j],a[i]    #利用序列解包交换这两个数的值
print(a)    #打印输出a

二、选择排序

选择排序是指在程序的内循环中,只要找到概论循环中最小数的下标就可以了,当这一轮循环结束时,进行一次交换。

a = [1,2,4,3,6,5,8]
for i in range(0,len(a)-1):    #控制循环次数
    p = i    #把要比较的每个数的下标赋值为p
    for j in range(i+1,len(a)):    #把下标i后面的数与a[i]进行比较
        if a[j]>a[p]:    #如果后面的数比a[p]大,就把这个大的数字的下标赋值给p
            p = j    
    if p!=i:    #如果这一轮结束后,a[i]还是最大的,就不用交换值,否则就利用序列解包交换他们的值
        a[i],a[p] = a[p],a[i]
print(a)

三、冒泡排序

冒泡排序是将相邻的数两两比较,将小的数字交换到前面,大的数字交换到后面。

a = [1,2,4,3,6,5,8]
for i in range(0,len(a)-1):    #比较的轮数,n个数比较n-1轮
    for j in range(0,len(a)-i-1):    #每一轮进行比较的次数
        if a[j]>a[j+1]:    #每一轮两两比较,从大到小排列
            a[j],a[j+1] = a[j+1],a[j]    #利用序列解包进行交换
print(a)

今天就写到这吧,有兴趣的咱们可以一起交流!

猜你喜欢

转载自blog.csdn.net/yanzhiguo98/article/details/84133766
今日推荐