#计数排序defcount_sort(l,max_num =100):
count =[0for _ inrange(max_num +1)]for val in l:
count[val]+=1
l.clear()for i, v inenumerate(count):#表示i这个数出现v次for _ inrange(v):
l.append(i)return l
l =[1,1,1,2,3,9,9,4,4,4,5,5]print(count_sort(l))
#希尔排序是一种分组插入排序,每趟使整体数据越来越接近有序definsert_sort_gap(l,d):for i inrange(d,len(l)):
tmp = l[i]
j = i - d
while j >=0and l[j]> tmp:
l[j+d]= l[j]
j -= d
l[j+d]= tmp
defshell_sort(l):
d =len(l)while d >0:
insert_sort_gap(l,d)
d = d //2return l
l =[3,4,5,2,7,34,11,23]print(shell_sort(l))
#基数排序 (只能处理正整数)defradix_sort(l):
max_num =max(l)
i =0while(10**i <= max_num):
buckets =[[]for _ inrange(10)]for val in l:
digit = val //(10**i)%10
buckets[digit].append(val)
l.clear()for bucket in buckets:for val in bucket:
l.append(val)
i +=1return l
print(radix_sort([234,345,333,456,674,4567,23,345,56,67,78,6]))
#写l.reverse()函数 前后交换#[1,2,3,4,5] 0,1#[1,2,3,4,5,6] 0,1,2#[1,2,3,4,5,6,7] 0,1,2# n // 2 - 1defreverse_list(l):
n =len(l)for i inrange(n //2):
l[i], l[n-i-1]= l[n-i-1], l[i]return l
#反转数字defreverse_int(num):
res =0while num >0:
res = res *10
res += num %10
num = num //10return res
#数字为负数defreverse_int1(num):
is_neg =Falseif num <0:
is_neg =True
num = num *-1
res =0while num >0:
res = res *10
res += num %10
num = num //10if is_neg:
res = res *-1return res
print(reverse_int1(-67801))