La función de C++ std::is_sorted verifica si los elementos en el rango [primero, último] están ordenados en orden ascendente. Los elementos se comparan usando el operador < .
Hay dos variantes de std::is_sorted:
- Sin usar predicado binario
bool is_sorted( ForwardIt first, ForwardIt last ); first, last : the range of elements to examine Return value : true: if the elements are in non-decreasing order. false: any element in increasing order.
- Ejemplo:
dado un contenedor de tamaño n y un rango entre [0 … n], escriba un programa para verificar si está ordenado en orden ascendente o no. Se permiten valores iguales en la array y dos valores iguales consecutivos se consideran ordenados.
Input : 2 5 9 4 /*Range = 3*/ Output : Sorted in given range. Input : 3 5 1 9 /*Range = 3*/ Output : Not sorted in given range.
CPP
// CPP program to illustrate // std::is_sorted // without binary predicate #include <iostream> #include <algorithm> // Driver Code int main() { int A[] = { 10, 11, 15, 12 }; // Index 0 to 2 int range1 = 3; // Index 0 to 3 int range2 = 4; // Condition if container is sorted or not in range1 if (std::is_sorted(A, A + range1)) { std::cout << "Sorted in the range : " << range1 << std::endl; } else { std::cout << "Not Sorted in the range : " << range1 << std::endl; } // Condition if container is sorted or not in range2 if (std::is_sorted(A, A + range2)) { std::cout << "Sorted in the range : " << range2 << std::endl; } else { std::cout << "Not Sorted in the range : " << range2 << std::endl; } return 0; }
- Producción :
Sorted in the range : 3 Not Sorted in the range : 4
- Hemos discutido otros enfoques aquí .
- Usando predicado binario
bool is_sorted (ForwardIt first, ForwardIt last, Compare comp); first, last : the range of elements to examine comp : binary predicate Return value : true: if the elements are in non-decreasing order. false: any element in increasing order.
- Ejemplo:
dada una string compuesta solo de caracteres. Compruebe si los caracteres están ordenados. Además, ignore los casos al comparar, es decir, ‘f’ > ‘A’
Input : AHZP Output : Not Sorted Input : Boy Output : Sorted
CPP
// CPP program to illustrate // std::is_sorted // using binary predicate #include <iostream> #include <algorithm> using namespace std; // Binary predicate bool ignore_case(char a, char b) { // Converts both characters to lowercase and checks if a <= b return (tolower(a) <= tolower(b)); } // Function that checks if string is sorted while ignoring the case bool check_if_sorted(string str) { // Function call to is_sorted with binary predicate ignore_case return is_sorted(str.begin(), str.end(), ignore_case); } // Driver code int main() { // String which is to be checked string str = "tOY"; // Function returned true, string is sorted if (check_if_sorted(str)) { cout << "Sorted"; } // Function returned false, string not sorted else { cout << "Not sorted"; } return 0; }
- Producción :
Not sorted
- Complejidad temporal: la complejidad es lineal en la distancia entre el primero y el último: compara pares de elementos hasta que se encuentra una falta de coincidencia.
Este artículo es una contribución de Rohit Thapliyal . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA