Python 编程题 第十一节:选择排序、插入排序、删除字符、目标移动、尾部的0

发布于:2025-03-21 ⋅ 阅读:(36) ⋅ 点赞:(0)

选择排序

假定第一个为最小的为已排序序列,与后面的比较,找到未排序序列中最小的后,交换位置,获得最小元素,依次往后

lst=[1,14,25,31,21,13,6,8,14,9,7]
def selection_sort(lst):
    for i in range(len(lst)):
        min_index=i
        for j in range(i+1,len(lst)):
            if lst[min_index]>lst[j]:
                min_index=j
        lst[min_index],lst[i]=lst[i],lst[min_index]
    return lst
print(selection_sort(lst))

插入排序

假设第一个元素为已排序列,后面为未排序列,将未排序列中最左边的元素与已排序列从大到小每个元素比较,找到合适位置插入

lst=[1,14,25,31,21,13,6,8,14,9,7]
def insert_sort(lst):
    for i in range(1,len(lst)):
        key=lst[i]#未排序列最左边元素
        j=i-1#已排序列最大元素索引
        while j>=0:
            if lst[j]>key:
                lst[j+1]=lst[j]#向后挪
                lst[j]=key
            j-=1
    return lst
print(insert_sort(lst))

删除字符

str="sajdosdajidsaiojdasjaaascsovsvnosfnei"
sub="abc"
ans=""
for i in str:
    if i in sub:
        ans+=i
print(ans)

目标移动

保持其他序列顺序的同时将目标值移动到最前面

nums=[1,1,2,3,4,5,1,2,4,6,8,7,9]
print(nums)
target=int(input())
def func(nums,target):
    ans=[]
    count=0
    for i in nums:
        if i != target:
            ans.append(i)
            count+=1
    nums2=[target for i in range(len(nums)-count)]
    nums2.extend(ans)
    return nums2
print(func(nums,target))

尾部的0

n的阶乘尾部0的个数,取决于n的阶乘中10的个数,而10=2*5,有5一定会出现2,即取决于5的个数

n=int(input())
def search(n):
    count=0
    for i in range(5,n+1,5):
        while i%5==0:
            i//=5
            count+=1
    return count
print(search(n))