各种排序算法比较和总结

插入排序

插入排序思想

遍历数组,遍历到i时,a0,a1...ai-1是已经排好序的,将ai从ai-1开始向前和每个比较大小,如果小于,则将此位置元素向后移动,继续向前比较,如果不小于,则放到正在比较的元素之后。从算法思想可以看出,当相等元素比较时,原来靠后的元素经过比较后还是在后边,所以插入排序是稳定的

插入排序代码

def insertionSort(arr):
    for i in range(1,len(arr)): #第一个元素本来就是有序所以从arr[1]开始比较
        key=arr[i]
        j=i-1
        while j>=0 and key<arr[j]:
            arr[j+1]=arr[j]
            j-=1
        arr[j+1]=key
    

选择排序

选择排序思想

遍历数组,遍历到i时,a0,a1...ai-1是已经排好序的,然后从i到n选择出最小的,记录下位置,如果不是第i个,则和第i个元素交换,此时第i个元素可能会排到相等元素之后,造成排序的不稳定
def selectionSort(arr):
    for i in range(len(arr)):
        min=i
        for j in range(i+1,len(arr)):
            if arr[j]<arr[min]:
                min=j
        temp=arr[i]
        arr[i]=arr[min]
        arr[min]=temp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值