繁体   English   中英

对 python 中的列表进行排序,而没有排序的 function

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM