首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python中的快速排序和选择排序方法

python中的快速排序和选择排序方法
EN

Stack Overflow用户
提问于 2022-06-17 14:03:23
回答 1查看 41关注 0票数 0
代码语言:javascript
复制
class University:
        def __init__(self, name, numberoffaculity, numberofstudent):
            self.name = name
            self.numberoffaculity = numberoffaculity
            self.numberofstudent = numberofstudent


n = int(input())  # Number of universities that user wants to input
universities = []
for i in range(n):
    name = input()
    numberoffaculity = int(input())
    numberofstudent = int(input())
    uni = University(name, numberoffaculity, numberofstudent)
    universities.append(uni)

# Insert your code below this line


# Insert your code above this line

for uni in universities:
    print("%-10s %-10d %-10d"
          % (uni.name, uni.numberoffaculity, uni.numberofstudent))

我的目标是:程序获得数字"numberoffaculity“1或2,如果为1,则通过quicksort方法从大到小对列表进行排序和打印;如果是2E 212,则将根据E 115E 216/code>通过E 117选择排序>E 218方法对列表进行排序和打印。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-17 14:58:49

这应该能起作用。首先,我用一个键函数添加了quick_sort和selection_sort函数。

然后我根据用户输入调用它们:

代码语言:javascript
复制
def quick_sort(array,key = lambda x:x):
    if len(array) < 2:
        return array
    else:
        pivot = array[0]
        less = [i for i in array[1:] if key(i) <= key(pivot)]
        greater = [i for i in array[1:] if key(i) > key(pivot)]
        return quick_sort(less,key) + [pivot] + quick_sort(greater,key)


def selection_sort(lst,key = lambda x:x):
    empty_lst = []
    x = len(lst) - 1
    while x >= 0:
        for i in range(len(lst)):
            if key(lst[i]) <= key(lst[0]):
                lst[0], lst[i] = lst[i], lst[0]
                # this part compares the number in first index and numbers after the first index.
        g = lst.pop(0)
        empty_lst.append(g)
        x -= 1
    return empty_lst


user_input = int(input())
if user_input==1:
    universities = quick_sort(universities,key = lambda x:x.numberoffaculity)[::-1]
elif user_input==2:
    universities = selection_sort(universities,key = lambda x:x.numberofstudent)
else:
    print("invalid sort input , expected 1 or 2 and got %s"%user_input)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72660626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档