Laissez,
#include <vector>
vector<int> v {1, 2, 3, -1, -2, -3};
Si le vecteur est trié par ordre croissant ou décroissant, vous pouvez le trouver avec une complexité O(1).
Pour un vecteur d'ordre croissant, le premier élément est le plus petit élément, vous pouvez l'obtenir par v[0] (indexation basée sur 0) et le dernier élément est le plus grand élément, vous pouvez l'obtenir par v[sizeOfVector-1].
Si le vecteur est trié par ordre décroissant, alors le dernier élément est le plus petit élément, vous pouvez l'obtenir par v[sizeOfVector-1] et le premier élément est le plus grand élément, vous pouvez l'obtenir par v[0].
Si le vecteur n'est pas trié, il faut alors itérer sur le vecteur pour obtenir le plus petit/le plus grand élément. Dans ce cas, la complexité temporelle est O(n), n étant la taille du vecteur.
int smallest_element = v[0]; //let, first element is the smallest one
int largest_element = v[0]; //also let, first element is the biggest one
for(int i = 1; i < v.size(); i++) //start iterating from the second element
{
if(v[i] < smallest_element)
{
smallest_element = v[i];
}
if(v[i] > largest_element)
{
largest_element = v[i];
}
}
Vous pouvez utiliser un itérateur,
for (vector<int>:: iterator it = v.begin(); it != v.end(); it++)
{
if(*it < smallest_element) //used *it (with asterisk), because it's an iterator
{
smallest_element = *it;
}
if(*it > largest_element)
{
largest_element = *it;
}
}
Vous pouvez le calculer dans la section d'entrée (lorsque vous devez trouver le plus petit ou le plus grand élément d'un vecteur donné).
int smallest_element, largest_element, value;
vector <int> v;
int n;//n is the number of elements to enter
cin >> n;
for(int i = 0;i<n;i++)
{
cin>>value;
if(i==0)
{
smallest_element= value; //smallest_element=v[0];
largest_element= value; //also, largest_element = v[0]
}
if(value<smallest_element and i>0)
{
smallest_element = value;
}
if(value>largest_element and i>0)
{
largest_element = value;
}
v.push_back(value);
}
Vous pouvez également obtenir l'élément le plus petit/le plus grand grâce à des fonctions intégrées.
#include<algorithm>
int smallest_element = *min_element(v.begin(),v.end());
int largest_element = *max_element(v.begin(),v.end());
Vous pouvez obtenir l'élément le plus petit/le plus grand de n'importe quelle plage en utilisant cette fonction. par exemple,
vector<int> v {1,2,3,-1,-2,-3};
cout << *min_element(v.begin(), v.begin() + 3); //this will print 1,smallest element of first three elements
cout << *max_element(v.begin(), v.begin() + 3); //largest element of first three elements
cout << *min_element(v.begin() + 2, v.begin() + 5); // -2, smallest element between third and fifth element (inclusive)
cout << *max_element(v.begin() + 2, v.begin()+5); //largest element between third and first element (inclusive)
J'ai utilisé l'astérisque (*), avant les fonctions min_element()/max_element(). Parce que les deux retournent un itérateur. Tous les codes sont en c++.