Python 排序算法(冒泡、选择、插入、快排、希尔等)

1、冒泡排序
原理:数组相邻元素两两比较,以从小到大排序为例大的往后放。第一轮比较完毕后,最大值就出现在了最大索引处。每一轮至少有一个元素处于最终位置。以此类推,每一轮比较次数-1;

temp_arr = [1, 5, 6, 3, 0, 9, 4, 8, 2, 7]
print(temp_arr)
for i in range(len(temp_arr) - 1):
    for j in range(len(temp_arr) - i - 1):
        if (temp_arr[j] > temp_arr[j + 1]):
        	#交换位置
            temp_arr[j], temp_arr[j + 1] = temp_arr[j + 1], temp_arr[j]
print(temp_arr)

在这里插入图片描述
2、选择排序
原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后从剩余未排序元素中继续寻找最小(大)元素,放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

temp_arr = [1, 5, 6, 3, 0, 9, 4, 8, 2, 7]
print(temp_arr)
for i in range(len(temp_arr) - 1):
    index = i
    #剩余未排序序列最小元素出现的索引位置
    for j in range(i + 1, len(temp_arr)):        		
        if temp_arr[index] > temp_arr[j]:
            index = j
    temp_arr[i], temp_arr[index] = temp_arr[index], temp_arr[i]#交换位置
print(temp_arr)

在这里插入图片描述
3、插入排序
原理:对于每个未排序数据,(从小到大排序为例)在已排序序列中从后向前扫描,找到大于当前元素的元素索引位置,并向后移动排序序列元素,每一轮循环后插入当前元素到索引位置

temp_arr = [1, 5, 6, 3, 0, 9, 4, 8, 2, 7]
print(temp_arr)
for i in range(1, len(temp_arr)):
    index = i
    temp = temp_arr[i];
    for j in range(i - 1, -1, -1):
        if temp < temp_arr[j]:
        	#移动元素
            temp_arr[j + 1] = temp_arr[j];
            index = j
        else:
            break;
    #插入元素
    temp_arr[index]=temp
print(temp_arr)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值