Python|检查降序排序列表
列表的排序操作是许多应用程序中必不可少的操作。但它需要 O(nlogn) 时间复杂度,因此希望避免这种情况。因此,要检查是否需要这样做,知道列表是否默认反向排序,可以检查列表是否已排序。让我们讨论实现这一目标的各种方法。
方法#1:朴素的方法
检查这一点的最简单方法是对第一个元素运行一个循环,并检查我们是否可以在该元素之后找到比它更大的元素,如果是,则列表未反向排序。
# Python3 code to demonstrate
# Check for Descending Sorted List
# using naive method
# initializing list
test_list = [10, 8, 4, 3, 1]
# printing original list
print ("Original list : " + str(test_list))
# using naive method to
# Check for Descending Sorted List
flag = 0
i = 1
while i < len(test_list):
if(test_list[i] > test_list[i - 1]):
flag = 1
i += 1
# printing result
if (not flag) :
print ("Yes, List is reverse sorted.")
else :
print ("No, List is not reverse sorted.")
输出 :
Original list : [10, 8, 4, 3, 1]
Yes, List is reverse sorted.
方法#2:使用sort()
+ reverse
新列表可以作为原始列表的副本,对新列表进行排序并与旧列表进行比较将给出是否需要排序以获得反向排序列表的结果。
# Python3 code to demonstrate
# Check for Descending Sorted List
# using sort() + reverse
# initializing list
test_list = [10, 5, 4, 3, 1]
# printing original list
print ("Original list : " + str(test_list))
# using sort() + reverse to
# Check for Descending Sorted List
flag = 0
test_list1 = test_list[:]
test_list1.sort(reverse = True)
if (test_list1 == test_list):
flag = 1
# printing result
if (flag) :
print ("Yes, List is reverse sorted.")
else :
print ("No, List is not reverse sorted.")
输出 :
Original list : [10, 8, 4, 3, 1]
Yes, List is reverse sorted.