ปล่อย,
#include <vector>
vector<int> v {1, 2, 3, -1, -2, -3};
หากเวกเตอร์เรียงลำดับจากน้อยไปมากหรือมากไปหาน้อยคุณจะพบว่ามีความซับซ้อน O (1)
สำหรับเวกเตอร์จากน้อยไปหามากองค์ประกอบแรกเป็นองค์ประกอบที่เล็กที่สุดคุณสามารถหาได้โดย v [0] (0 ตามดัชนี) และองค์ประกอบสุดท้ายเป็นองค์ประกอบที่ใหญ่ที่สุดคุณสามารถหาได้โดย v [sizeOfVector-1]
หากเวกเตอร์เรียงลำดับจากมากไปหาน้อยองค์ประกอบสุดท้ายเป็นองค์ประกอบที่เล็กที่สุดคุณจะได้รับโดย v [sizeOfVector-1] และองค์ประกอบแรกเป็นองค์ประกอบที่ใหญ่ที่สุดคุณจะได้รับโดย v [0]
หากไม่ได้จัดเรียงเวกเตอร์คุณจะต้องวนซ้ำบนเวกเตอร์เพื่อให้ได้องค์ประกอบที่เล็กที่สุด / ใหญ่ที่สุดในกรณีนี้ความซับซ้อนของเวลาคือ O (n) ที่นี่ n คือขนาดของเวกเตอร์
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];
}
}
คุณสามารถใช้ iterator
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;
}
}
คุณสามารถคำนวณได้ในส่วนอินพุต (เมื่อคุณต้องหาองค์ประกอบที่เล็กที่สุดหรือใหญ่ที่สุดจากเวกเตอร์ที่กำหนด)
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);
}
นอกจากนี้คุณยังสามารถรับองค์ประกอบที่เล็กที่สุด / ใหญ่ที่สุดได้ด้วยฟังก์ชันในตัว
#include<algorithm>
int smallest_element = *min_element(v.begin(),v.end());
int largest_element = *max_element(v.begin(),v.end());
คุณสามารถรับองค์ประกอบที่เล็กที่สุด / ใหญ่ที่สุดของช่วงใดก็ได้โดยใช้ฟังก์ชันนี้ เช่น,
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)
ฉันใช้เครื่องหมายดอกจัน (*) ก่อนฟังก์ชัน min_element () / max_element () เพราะทั้งคู่ส่งคืน iterator รหัสทั้งหมดอยู่ใน c ++
cloud
ไม่ใช่คอนเทนเนอร์ STL แต่เป็นint[10]
ไฟล์. โดยทั่วไปไม่ได้เป็นสมาชิกcloud
.begin()
อาจต้องการรับหนังสือ C ++ พื้นฐานเว้นแต่คุณจะทำสิ่งนี้เพียงสิ่งเดียว