Python 编程题 第十一节:选择排序、插入排序、删除字符、目标移动、尾部的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))