总结:python关于一些基本排序算法的实现

1 冒泡排序

 从第一个数开始和相邻的数逐个比大小,如果比相邻的数大(升序),则调换位置,然后第二个数依次类推。

def Bubble(array):
    for j in range(len(array)-1):
        for i in range(len(array)-j-1):
            if array[i]>array[i+1]:
                array[i],array[i+1] = array[i+1],array[i]
    return array

print(Bubble([5,4,3,2,1]))

2 选择排序

 每次把选择的第一个数和后面的数做对比,记下最小数的编号,把它放在最前面的位置。

def Select(array):
    smallest = 0
    for j in range(len(array)):
        for i in range(j,len(array)):
            if array[i] < array[smallest]: #当前值 比之前选出来的最小值 还要小,那就把它换成最小值
                smallest = i
        else:
            # print("smallest num is ",array[smallest])
            array[j],array[smallest] = array[smallest],array[j]
    return array
a = [ 9,1,22,31,45,3,6,2,11 ]
print(Select(a))


3 插入排序

从第二个数依次开始和左边的数做比较,把他们插到合适的位置。

def Insert(array):
    for index in range(1,len(array)):
        value = array[index]
        i = index-1
        while i>=0:
            if value<array[i]:
                array[i],array[i+1] = value,array[i]
                i -= 1
    return array


print(Insert([5,4,3,2,1]))
 
4 希尔排序
希尔排序的实质就是分组插入排序,插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率,但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位。
def 

5 快速排序

通过把列表分成两部分,通过交换位置,使右边的数据始终比左边的数大,然后采用二分思想不断重复,最终完成排序。

def Quick(array,i,j):
    if i>=j:
        return 3
    low = i
    high = j
    k = array[low]
    while low<high:
        while low<high and array[high]>k:
            high -= 1
        array[low] = array[high]
        array[high] = k
        while low<high and array[low]<=k:
            low += 1
        array[high] = array[low]
        array[low] = k
    Quick(array,i,low-1)
    Quick(array,low+1,j)


a = [5,1,3,6,7,9]
Quick(a,0,5)
print(a)







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值