কম্পিউটার টিউটোরিয়াল

C#-এ লিস্ট থেকে সর্বোচ্চ, সর্বনিম্ন, দ্বিতীয় সর্বোচ্চ, দ্বিতীয় সর্বনিম্ন মান বের করা

LINQ-এর Max, Min, OrderByDescending, OrderBy মেথড ব্যবহার করে লিস্ট বা অ্যারে থেকে চাহিদামতো মান সহজে বের করা যায়।

পদ্ধতি


var numbers = new[] { 99, 35, 26, 87 };

int max = numbers.Max();                    // সর্বোচ্চ
int min = numbers.Min();                    // সর্বনিম্ন
int secondMax = numbers.OrderByDescending(x => x).Skip(1).First(); // ২য় সর্বোচ্চ
int secondMin = numbers.OrderBy(x => x).Skip(1).First();           // ২য় সর্বনিম্ন

সম্পূর্ণ উদাহরণ


using System;
using System.Linq;

class MinMaxDemo
{
    public static void Main()
    {
        var val = new[] { 99, 35, 26, 87 };
        
        Console.WriteLine("সর্বোচ্চ: " + val.Max());
        Console.WriteLine("সর্বনিম্ন: " + val.Min());
        Console.WriteLine("২য় সর্বোচ্চ: " + val.OrderByDescending(x => x).Skip(1).First());
        Console.WriteLine("২য় সর্বনিম্ন: " + val.OrderBy(x => x).Skip(1).First());
        
        // ডুপ্লিকেট থাকলে Distinct() ব্যবহার করুন
        var withDup = new[] { 5, 5, 3, 3, 2 };
        Console.WriteLine("ডুপ্লিকেটসহ ২য় সর্বোচ্চ: " + withDup.Distinct().OrderByDescending(x => x).Skip(1).First());
    }
}

আউটপুট


সর্বোচ্চ: 99
সর্বনিম্ন: 26
২য় সর্বোচ্চ: 87
২য় সর্বনিম্ন: 35
ডুপ্লিকেটসহ ২য় সর্বোচ্চ: 3

পারফরম্যান্স নোট

  • Max/Min: O(n) — এক পাস
  • OrderBy + Skip + First: O(n log n) — সর্টিং দরকার
  • বড় ডেটাসেটের জন্য সিংগেল পাস অ্যালগরিদম (ম্যানুয়াল লুপ) দ্রুত।

সিংগেল পাস অ্যালগরিদম (O(n), কোনো সর্টিং নেই)


int max = int.MinValue, secondMax = int.MinValue;
int min = int.MaxValue, secondMin = int.MaxValue;

foreach (int n in numbers)
{
    if (n > max) { secondMax = max; max = n; }
    else if (n > secondMax && n != max) secondMax = n;
    
    if (n < min) { secondMin = min; min = n; }
    else if (n < secondMin && n != min) secondMin = n;
}
  1. পাইথন প্রোগ্রাম লিস্টে সবচেয়ে ছোট সংখ্যা বের করা

  2. পাইথনে লিস্ট থেকে সর্বোচ্চ সংখ্যা বের করা

  3. পাইথনে লিস্ট থেকে N বড় এলিমেন্ট বের করা

  4. পাইথনে লিস্ট থেকে সর্বোচ্চ, সর্বনিম্ন, দ্বিতীয় সর্বোচ্চ ও দ্বিতীয় সর্বনিম্ন বের করা