C# सरणियों को क्रमबद्ध करने के लिए मज़बूत और बहुमुखी विधियाँ प्रदान करता है। यह गाइड विभिन्न परिदृश्यों का पता लगाता है, साधारण पूर्णांक सरणियों से लेकर जटिल ऑब्जेक्ट सरणियों तक, C# की क्रमबद्धता क्षमताओं की शक्ति और लचीलेपन को दर्शाता है।
विषय सूची
- Array.Sort() को समझना
- स्ट्रिंग सरणियों को क्रमबद्ध करना
- कस्टम तुलनाएँ
- ऑब्जेक्ट सरणियों को क्रमबद्ध करना
- क्रमबद्धता के लिए LINQ
- प्रदर्शन पर विचार
- निष्कर्ष
- अक्सर पूछे जाने वाले प्रश्न
Array.Sort() को समझना
Array.Sort()
विधि C# में सरणी क्रमबद्धता का आधार है। यह विविध डेटा प्रकारों और क्रमबद्धता आवश्यकताओं को संभालने के लिए कई अतिभार प्रदान करता है। मुख्य रूप से क्विकसॉर्ट एल्गोरिथम का उपयोग करते हुए, यह सरणियों को इन-प्लेस कुशलतापूर्वक क्रमबद्ध करता है, सीधे मूल सरणी को संशोधित करता है बिना कोई प्रतिलिपि बनाए।
int[] numbers = { 5, 2, 8, 1, 9, 4 };
Array.Sort(numbers); // आरोही क्रम
Console.WriteLine(string.Join(", ", numbers)); // आउटपुट: 1, 2, 4, 5, 8, 9
यह मूल उदाहरण पूर्णांक सरणी के साथ Array.Sort()
को प्रदर्शित करता है। सरणी को इन-प्लेस आरोही क्रम में क्रमबद्ध किया गया है।
स्ट्रिंग सरणियों को क्रमबद्ध करना
स्ट्रिंग सरणियों को क्रमबद्ध करना उतना ही सरल है। Array.Sort()
डिफ़ॉल्ट रूप से लेक्सिकोग्राफिकल (वर्णमाला) क्रम में करता है।
string[] names = { "David", "Alice", "Charlie", "Bob" };
Array.Sort(names);
Console.WriteLine(string.Join(", ", names)); // आउटपुट: Alice, Bob, Charlie, David
कस्टम तुलनाएँ
अधिक नियंत्रण के लिए, प्रतिनिधियों या लैम्ब्डा अभिव्यक्तियों का उपयोग करके कस्टम तुलनाएँ अमूल्य हैं। यह तब महत्वपूर्ण है जब विशिष्ट गुणों के आधार पर या गैर-मानक क्रम का उपयोग करके ऑब्जेक्ट को क्रमबद्ध किया जाता है।
int[] numbers = { 5, 2, 8, 1, 9, 4 };
Array.Sort(numbers, (x, y) => y.CompareTo(x)); // अवरोही क्रम
Console.WriteLine(string.Join(", ", numbers)); // आउटपुट: 9, 8, 5, 4, 2, 1
लैम्ब्डा अभिव्यक्ति (x, y) => y.CompareTo(x)
तुलना को उलट देती है, जिसके परिणामस्वरूप अवरोही क्रम होता है।
ऑब्जेक्ट सरणियों को क्रमबद्ध करना
ऑब्जेक्ट सरणियों को क्रमबद्ध करने के लिए क्रमबद्धता गुण को निर्दिष्ट करना आवश्यक है। एक कस्टम तुलना आवश्यक है।
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
Person[] people = {
new Person { Name = "Bob", Age = 30 },
new Person { Name = "Alice", Age = 25 },
new Person { Name = "Charlie", Age = 35 }
};
Array.Sort(people, (x, y) => x.Age.CompareTo(y.Age)); // आयु के अनुसार क्रमबद्ध करें
foreach (var person in people)
{
Console.WriteLine($"{person.Name} - {person.Age}");
}
क्रमबद्धता के लिए LINQ
अधिक जटिल परिदृश्यों के लिए या List<T>
के साथ काम करते समय, LINQ शक्तिशाली क्रमबद्धता क्षमताएँ प्रदान करता है। OrderBy()
और OrderByDescending()
कस्टम तुलनकर्ताओं के साथ लचीली क्रमबद्धता प्रदान करते हैं।
List<Person> peopleList = people.ToList();
var sortedPeopleByName = peopleList.OrderBy(p => p.Name);
foreach (var person in sortedPeopleByName)
{
Console.WriteLine($"{person.Name} - {person.Age}");
}
प्रदर्शन पर विचार
जबकि Array.Sort()
आम तौर पर कुशल है, अत्यधिक बड़े सरणियों से निपटते समय डेटा आकार और तुलना की जटिलता पर विचार करें। विशाल डेटासेट के लिए, विशेष क्रमबद्धता एल्गोरिदम या समानांतर प्रसंस्करण तकनीकों की खोज से प्रदर्शन में सुधार हो सकता है।
निष्कर्ष
C# के सरणी क्रमबद्धता तंत्र विभिन्न डेटा प्रकारों और क्रमबद्धता आवश्यकताओं के लिए अत्यधिक प्रभावी हैं। उपयुक्त होने पर कस्टम तुलनाओं और LINQ का उपयोग करने में महारत हासिल करने से आपके अनुप्रयोगों में कुशल और लचीली क्रमबद्धता सुनिश्चित होती है।
अक्सर पूछे जाने वाले प्रश्न
- प्रश्न: क्या
Array.Sort()
स्थिर है? उत्तर: हाँ, यह एक स्थिर क्रमबद्धता है; समान तत्वों का सापेक्ष क्रम संरक्षित है। - प्रश्न:
Array.Sort()
किस एल्गोरिथम का उपयोग करता है? उत्तर: यह आम तौर पर क्विकसॉर्ट या एक आत्मनिरीक्षण क्रम संस्करण का उपयोग करता है, डेटा के आधार पर गतिशील रूप से सबसे कुशल एल्गोरिथम का चयन करता है। - प्रश्न:
List<T>
को कैसे क्रमबद्ध करें? उत्तर:List<T>.Sort()
या LINQ केOrderBy()
/OrderByDescending()
विधियों का उपयोग करें।