Python | Comprobar si la lista está ordenada o no

La operación ordenada de la lista es una operación esencial en muchas aplicaciones. Pero toma lo mejor de la complejidad del tiempo O (nlogn), por lo tanto, uno espera evitar esto. Entonces, para verificar si esto es necesario o no, sabiendo si la lista está ordenada por defecto o no, uno puede verificar si la lista está ordenada o no. Discutamos varias formas en que esto se puede lograr.

Método n.º 1: método ingenuo
La forma más sencilla de verificar esto es ejecutar un bucle para el primer elemento y verificar si podemos encontrar algún elemento más pequeño después de ese elemento; en caso afirmativo, la lista no está ordenada.

# Python3 code to demonstrate 
# to check if list is sorted
# using naive method 
  
# initializing list
test_list = [1, 4, 5, 8, 10]
  
# printing original list 
print ("Original list : " + str(test_list))
  
# using naive method to 
# check 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 sorted.")
else :
    print ("No, List is not sorted.")

Producción :

Original list : [1, 4, 5, 8, 10]
Yes, List is sorted.

Método n.º 2: usarsort()
la nueva lista se puede hacer como una copia de la lista original, ordenar la nueva lista y compararla con la lista anterior nos dará el resultado si se requirió ordenar para obtener la lista ordenada o no.

# Python3 code to demonstrate 
# to check if list is sorted
# using sort()
  
# initializing list
test_list = [10, 4, 5, 8, 10]
  
# printing original list 
print ("Original list : " + str(test_list))
  
# using sort() to 
# check sorted list 
flag = 0
test_list1 = test_list[:]
test_list1.sort()
if (test_list1 == test_list):
    flag = 1
      
# printing result
if (flag) :
    print ("Yes, List is sorted.")
else :
    print ("No, List is not sorted.")

Producción :

Original list : [10, 4, 5, 8, 10]
No, List is not sorted.

Método n.º 3: usarsorted()
Usar una analogía similar al método anterior, pero no crea un nuevo espacio, sino solo un espacio momentáneo para ese tiempo y, por lo tanto, es un método útil, más corto y más rápido que el anterior.

# Python3 code to demonstrate 
# to check if list is sorted
# using sorted()
  
# initializing list
test_list = [1, 4, 5, 8, 10]
  
# printing original list 
print ("Original list : " + str(test_list))
  
# using sorted() to 
# check sorted list 
flag = 0
if(test_list == sorted(test_list)):
    flag = 1
      
# printing result
if (flag) :
    print ("Yes, List is sorted.")
else :
    print ("No, List is not sorted.")

Producción :

Original list : [1, 4, 5, 8, 10]
Yes, List is sorted.

Método #4: Usarall()
la forma más elegante, pythonica y más rápida de verificar la lista ordenada es el uso de all(). Esto usa el método similar al ingenuo, pero el uso all()lo hace más rápido.

# Python3 code to demonstrate 
# to check if list is sorted
# using all()
  
# initializing list
test_list = [9, 4, 5, 8, 10]
  
# printing original list 
print ("Original list : " + str(test_list))
  
# using all() to 
# check sorted list 
flag = 0
if(all(test_list[i] <= test_list[i + 1] for i in range(len(test_list)-1))):
    flag = 1
      
# printing result
if (flag) :
    print ("Yes, List is sorted.")
else :
    print ("No, List is not sorted.")

Producción :

Original list : [9, 4, 5, 8, 10]
No, List is not sorted.

Publicación traducida automáticamente

Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *