【问题标题】:Piece by piece sorting逐件分拣
【发布时间】:2022-07-20 18:40:53
【问题描述】:

创建一个列表(*例如,40 个项目的大小)并用随机项目填充它。

按 10 个元素对列表进行排序。即前10个元素升序排序,后10个元素降序排序,第三个10个元素升序排序,第四个降序排序。

答案必须在一个列表中返回!!!

*example - 表示这是列表大小的近似版本,您需要编写一个算法,可以对任意大小的列表进行排序。

from random import randint

list_1 = [randint(1, 100) for i in range(30)]


first_part = list_1[:10]
first_part.sort()
second_part = list_1[10:20]
second_part.sort(reverse=True)
third_part = list_1[20:30]
third_part.sort()

打印(第一部分 + 第二部分 + 第三部分)

我不明白如何编写可以对任意大小的列表进行排序的算法。

【问题讨论】:

    标签: python list sorting


    【解决方案1】:

    使用这个:

    import random
    
    def split(a, n):
        k, m = divmod(len(a), n)
        return (a[i*k+min(i, m):(i+1)*k+min(i+1, m)] for i in range(n))
    
    lst = random.sample(range(100), 20) # Random input list
    print(lst)
    
    l1, l2, l3, l4 = list(split(lst, 4)) # Split into 4 parts
    l1.sort(); l2.sort(reverse=True); l3.sort(); l4.sort(reverse=True)
    
    out = l1 + l2 + l3 + l4
    print(out)
    

    输出:

    [59, 56, 38, 64, 98, 44, 36, 0, 70, 71, 85, 87, 18, 91, 29, 86, 7, 88, 40, 3]
    [38, 56, 59, 64, 98, 71, 70, 44, 36, 0, 18, 29, 85, 87, 91, 88, 86, 40, 7, 3]
    

    【讨论】:

      猜你喜欢
      • 2011-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-13
      • 2018-04-21
      • 1970-01-01
      • 1970-01-01
      • 2012-07-13
      相关资源
      最近更新 更多