十大排序?回文?对称?这些几乎都是新手学习编程语言的必经之路,无论是学习C,py,java都躲不过去,思想一致情况下,python实现这些代码都最为简便,那么,极简情况有多简呢?
给出如下样式,望互相交流学习!!!
python版(求大佬改编成C语言版本)
#快速排序
#快速排序一行代码完事
l = [5,2,7,11,8,6,5,1] + [0,4,12,1,5,9,3,9]
q = lambda l: q([x for x in l[1:] if x <= l[0]]) + [l[0]] + q([x for x in l if x > l[0]]) if l else []
print(q(l))
#选择排序
#选择排序一行代码完事
l = [5,2,7,11,8,6,5,1] + [0,4,12,1,5,9,3,9]
l = [l.pop(l.index(min(l))) for _ in range(len(l))]
print(l)
#冒泡排序
#冒泡排序一行代码完事
l = [5,2,7,11,8,6,5,1] + [0,4,12,1,5,9,3,9]
[l.append(l.pop(0) if i == len(l) - 1 or l[0] < l[1] else l.pop(1)) for j in range(0, len(l)) for i in range(0, len(l))]
print(l)
#对分查找
#对分查找一行代码完事
l = [0,1,1,1,2,2,4]
bs = lambda l, x, lo, hi: -1 if lo > hi else (lo + hi) // 2 if l[(lo + hi) // 2] == x else bs(l, x, lo, (lo + hi) // 2 - 1) if l[(lo + hi) // 2] > x else bs(l, x, (lo + hi) // 2 + 1, hi)
print(bs(l, 2, 0, len(l) - 1))
#异位构词判定
#异位构词判定,一行代码完事
#“listen” → “silent”
#“funeral ” → “real fun”
#“elvis” → “lives”
s1 = "listen"
s2 = "silent"
b = (len(s1) == len(s2)) and all(filter(lambda x:x in s2,s1)) #一种方法
c = lambda s1, s2: sorted(s1) == sorted(s2) #另一种方法
print(b,c(s1,s2))
#对称串判定
#对称串判定,一行代码完事
s1 = "abopba"
d = lambda L:L[:len(L) // 2] == L[len(L) - 1:(len(L) + 1) // 2 - 1:-1]
print(d(s1))
#回文串判定
#回文串判定,一行代码完事
s1 = "abopba"
d = lambda L:L == L[::-1]
print(d(s1))
#埃筛法求正整数n以内(不含n)的所有质数
#埃筛法求正整数n以内(不含n)的所有质数,一行代码完事
n = 31
primes = reduce(lambda r, x: r - set(range(x ** 2, n, x)) if x in r else r, range(2, int(n ** 0.5) + 1), set(range(2, n)))
print(primes)
码字不易,求关注!!!