[英]sorting a list in python without the sorted function
import sys
import pdb
a = [5, 2, 4, 1]
for i in range(len(a)):
for j in range(len(a) - 1):
if a[j] > a[j+1]:
t = a[j]
a[j] = a[j+1]
a[j] = t
print a
sys.exit()
我刚刚在 Python 中尝试了一个 C 程序——没有sorted
的 function 的正常排序。 为什么我没有得到排序列表?
t = a[j]
其次是
a[j] = t
似乎不正确。 如果要交换它们,第二个应该是:
a[j + 1] = t
但是在Python中,最好这样写:
a[j], a[j + 1] = a[j + 1], a[j]
(当然,在Python,这是更好的写作快速排序。)
尝试这个 -:
for i in range(len(a)):
for j in range(len(a) - 1):
if a[j] > a[j+1]:
a[j+1], a[j] = a[j], a[j+1]
print a
:)
for
循环的最后一行应为a[j+1] = t
。 我认为这只是一个代码错误。 下次要保重。 另外,在Python中,当您要交换两个变量时,应遵循@minitech和@Nilesh G所说的内容。
a = [5,2,4,1]
for i in range(len(a)):
for j in range(len(a)-1):
If a[j]>a[j+1]:
a[j],a[j+1] = a[j+1],a[j]
Print a
s = [3, 6, 4, 5, 2, 1, 7, 8, 11, 12]
for k in range(len(s)):
for m in range(len(s)-1):
if s[m]>s[m+1]:
s[m],s[m+1] = s[m+1],s[m]
print s
如果时间复杂度很重要,这可以帮助你,
nums = [8,3,4,2,7,-9,5,0,1]
tmp = []
def get_index(val:int):
for i in range(0,len(tmp)):
if tmp[i] > val:
return i
else:
continue
for one_num in nums:
print(one_num, tmp)
if len(tmp) == 0:
tmp.append(one_num) #[8]
else: # [3,8]
if one_num > tmp[-1]:
tmp.append(one_num)
else:
tmp.insert(get_index(one_num, ),one_num)
print(tmp)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.