排序算法类和科学计算类

1.Bubble sort(冒泡排序)

它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

代码实现:使用冒泡排序从小到大排序

listc = [6, 37, 25, 40, 34, 60, 16, 20, 49, 10]
for i in range(len(listc)):
    for j in range(i+1, len(listc)):
        if listc[i] > listc[j]:
            listc[i], listc[j] = listc[j], listc[i]
print(listc)
>>>[6, 10, 16, 20, 25, 34, 37, 40, 49, 60]

代码实现:随机生成一个列表用冒泡排序从小到大排序

# 导入随机模块
import random
# 创建一个空列表,用于存放待排序随机数据集
data = [random.randint(0, 100) for i in range(10)]
print('待排序的随机数列: {0}'.format(data))
# 使用嵌套循环实现冒泡排序
# 外层循环控制排序的次数
for i in range(10):
    # 内层循环控制每次对比的次数
    for j in range(len(data)-1-i):
        # 如果前项值大于后项值则对位交换,将大的在列表中后移1位
        if data[j] > data[j+1]:
            temp = data[j]
            data[j] = data[j+1]
            data[j+1] = temp
            pass
# 输出排序后的结果
print('排序后的有序序列: {0}'.format(data)) 
>>>待排序的随机数列:[6, 37, 25, 40, 34, 60, 16, 20, 49, 10]
>>>排序后的有序序列:[6, 10, 16, 20, 25, 34, 37, 40, 49, 60]

2.Insertion sort(插入排序)

基本思想:以从小到大排序为例,元素0为第一个元素,插入排序是从元素1开始,尽可能插到前面。插入时分插入位置和试探位置,元素 i 的初始插入位置为i,试探位置为i-1,在插入元素i时,依次与i-1,i-2······元素比较,如果被试探位置的元素比插入元素大,那么被试探元素后移一位,元素i插入位置前移1位,直到被试探元素小于插入元素或者插入元素位于第一位。

代码实现:

lista = [5, 3, 9, 7, 4]
for i in range(1, len(lista)):
    for j in range(i, 0, -1):
        if lista[j] < lista[j - 1]:
            lista[j], lista[j -1] = lista[j - 1], lista[j]
            pass
        else:
            break
        pass
    pass
print(lista)
>>>[3, 4, 5, 7, 9]

代码实现:随机生成一个列表用插入排序从小到大排序

# 导入随机模块
import random
# 创建一个空列表,用于存放待排序随机数据集
data = [random.randint(0, 100) for i in range(10)]
print('待排序的随机数列: {0}'.format(data))
# 获取列表数据集中随机数的个数
length = len(data)
# 嵌套for循环实现插入排序
# 外层循环控制排序次数
for i in range(1, length):
    # 将当前的数字备份
    x = data[i]
    # 内层循环进行
    for j in range(i,-1,-1):
        # j为当前位置,试探j-1位置
        if x < data[j-1]:
            # 换值
            data[j] = data[j-1]
        else:
            break # 确定j位置
    data[j] = x
# 输出排序后的结果
print('排序后的有序序列: {0}'.format(data)) 
>>>待排序的随机数列:[5, 3, 9, 7, 4]
>>>排序后的有序序列:[3, 4, 5, 7, 9]

3.Matrix transposed(矩阵转置)

行列转换其实就是将矩阵n*m 转换成对位的 m*n。

代码实现:用推导式快速实现矩阵转置

A = [[1,2,3,4],[5,6,7,8]]
AT = [[x[i] for x in A]for i in range(len(A[0]))]
print(AT)
>>>[[1, 5], [2, 6], [3, 7], [4, 8]]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值