অ্যারের মধ্যে সবচেয়ে ছোট / বৃহত্তম সন্ধানের জন্য সবচেয়ে ছোট / বৃহত্তম হতে আরম্ভ করার কোনও বাস্তব প্রয়োজন নেই:
double largest = smallest = array[0];
for (int i=1; i<array_size; i++) {
if (array[i] < smallest)
smallest = array[i];
if (array[i] > largest0
largest= array[i];
}
অথবা, যদি আপনি এটি একাধিকবার করছেন:
#include <utility>
template <class iter>
std::pair<typename iter::value_type, typename iter::value_type> find_extrema(iter begin, iter end) {
std::pair<typename iter::value_type, typename iter::value_type> ret;
ret.first = ret.second = *begin;
while (++begin != end) {
if (*begin < ret.first)
ret.first = *begin;
if (*begin > ret.second)
ret.second = *begin;
}
return ret;
}
নমুনা কোড সরবরাহের অসুবিধা - আমি দেখছি অন্যরা ইতিমধ্যে একই ধারণাটির পরামর্শ দিয়েছে।
মনে রাখবেন যে স্ট্যান্ডার্ডটিতে একটি মিনি_ইলেট এবং সর্বোচ্চ_সংশ্লিষ্ট রয়েছে, এটি ব্যবহার করে ডেটা দিয়ে দু'বার স্ক্যান করা প্রয়োজন যা অ্যারেটি যদি বড় হয় তবে সমস্যা হতে পারে। সাম্প্রতিক স্ট্যান্ডার্ডগুলি এটিকে যুক্ত করে সম্বোধন করেছে std::minmax_elementযা find_extremaউপরের মত একই কাজ করে (একক পাসে কোনও সংখ্যায় ন্যূনতম এবং সর্বাধিক উভয় উপাদান সন্ধান করুন)।
সম্পাদনা করুন: স্বাক্ষরবিহীন একটি অ্যারেতে সর্বনিম্ন অ-শূন্য মান সন্ধানের সমস্যাটিকে সম্বোধন করুন: স্বাক্ষর করুন যে স্বাক্ষরবিহীন মানগুলি যখন চূড়ান্তভাবে পৌঁছে তখন "চারপাশে মোড়ানো" " ক্ষুদ্রতম অ-শূন্য মানটি খুঁজে পেতে, আমরা তুলনার জন্য প্রতিটি থেকে একটি করে বিয়োগ করতে পারি। যে কোনও শূন্য মান এই ধরণের জন্য সবচেয়ে বড় সম্ভাব্য মানের "চারপাশে মোড়ানো" হবে, তবে অন্যান্য মানের মধ্যে সম্পর্ক বজায় থাকবে। আমাদের হয়ে যাওয়ার পরে, আমরা স্পষ্টতই আমরা খুঁজে পাওয়া মানটিতে একটি যুক্ত করব।
unsigned int min_nonzero(std::vector<unsigned int> const &values) {
if (vector.size() == 0)
return 0;
unsigned int temp = values[0]-1;
for (int i=1; i<values.size(); i++)
if (values[i]-1 < temp)
temp = values[i]-1;
return temp+1;
}
নোট করুন এটি এখনও প্রাথমিক মানের জন্য প্রথম উপাদানটি ব্যবহার করে, তবে আমাদের এখনও কোনও "বিশেষ কেস" কোডের প্রয়োজন নেই - যেহেতু এটি সবচেয়ে সম্ভাব্য মানের সাথে প্রায় আবৃত হবে, যেহেতু কোনও শূন্যহীন মানই ছোট হিসাবে তুলনা করবে। ফলাফলটি ক্ষুদ্রতম ননজারো মান, বা 0 এবং যদি কেবলমাত্র ভেক্টরটিতে অ-শূন্য মান না থাকে।