这不是基于效率,必须与只蟒蛇的一个非常非常基本的知识去做(字符串,元组,列表基础知识),所以没有导入功能,或者使用排序/排序。 (这是使用Python 2.7.3)。
比如我有一个列表:
unsort_list = ["B", "D", "A", "E", "C"]
sort_list = []
sort_list需要能够打印出:
"A, B, C, D, E"
我可以用数字/整数做到这一点,是有字母顺序串类似的方法? 如果不是你会推荐(即使它是没有效率的。)不导入或排序功能。
Answer 1:
这里是一个非常短的实现的快速排序在Python算法:
def quicksort(lst):
if not lst:
return []
return (quicksort([x for x in lst[1:] if x < lst[0]])
+ [lst[0]] +
quicksort([x for x in lst[1:] if x >= lst[0]]))
这是一个玩具的实现,很容易理解,但效率太低,在实践中非常有用。 它的目的更多的是学术活动,以展示如何排序的问题的解决方案,可以在功能的编程风格简洁写入。 它将为列表的操作相当的物体,特别是在问题的例子:
unsort_list = ['B', 'D', 'A', 'E', 'C']
sort_list = quicksort(unsort_list)
sort_list
> ['A', 'B', 'C', 'D', 'E']
Answer 2:
纯娱乐:
from random import shuffle
unsorted_list = ["B", "D", "A", "E", "C"]
def is_sorted(iterable):
for a1,a2 in zip(iterable, iterable[1:]):
if a1 > a2: return False
return True
sorted_list = unsorted_list
while True:
shuffle(sorted_list)
if is_sorted(sorted_list): break
平均复杂性应该是阶乘和最坏的情况下无限
Answer 3:
更简单:
dc = { }
for a in unsorted_list:
dc[a] = '1'
sorted_list = dc.keys()
Answer 4:
u = ["B", "D", "A", "E", "C"]
y=[]
count=65
while len(y)<len(u):
for i in u:
if ord(i)==count:
y.append(i)
count+=1
print(y)
Answer 5:
这仅使用min()
内置式和list
对象的方法:
unsort_list = ["B", "D", "A", "E", "C"]
sort_list = []
while unsort_list:
smallest = min(unsort_list)
sort_list.append(smallest)
unsort_list.pop(unsort_list.index(smallest))
print sort_list
它破坏了未排序,所以你可能要做出的一个副本,并使用它。
Answer 6:
list_val = [ 'C', 'd', 'E', 'A', 'R']
for passnum in range(len(list_val)-1, 0, -1):
for i in range(passnum):
if list_val[i] > list_val[i+1]:
list_val[i], list_val[i+1] = list_val[i+1], list_val[i]
打印list_val
Answer 7:
该more_itertools
库有一个叫做归并算法的实现collate
。
import more_itertools as mit
iterables = ["B", "D", "A", "E", "C"]
list(mit.collate(*iterables))
# ['A', 'B', 'C', 'D', 'E']
Answer 8:
蟒蛇已经知道哪些字符串是第一,这取决于它们的ASCII值是下一个
例如:
"A"<"B"
True
所以我们可以写一个简单的冒泡排序算法进行排序字符串列表
unsort_list = ["B", "D", "A", "E", "C"]
def sortalfa(unsort_list):
for i in range(len(unsort_list)-1):
for j in range(i+1,len(unsort_list)):
if unsort_list[i]>unsort_list[j]:
temp = unsort_list[i]
unsort_list[i] = unsort_list[j]
unsort_list[j] = temp
print("sorted list:{}".format(unsort_list))
sortalfa(["B", "D", "A", "E", "C"])
结果:
sorted list:['A', 'B', 'C', 'D', 'E']
有可通过它可以用一行代码来完成许多标准库。
Answer 9:
我已经试过这样的事情,但我不知道时间程序的复杂性。
l=['a','c','b','f','e','z','s']
l1=[]
while l:
min=l[0]
for i in l:
# here **ord** means we get the ascii value of particular character.
if ord(min)>ord(i):
min=i
l1.append(min)
l.remove(min)
print(l1)
文章来源: Python: How to sort the alphabet in a list without sorted functions?