কৌশলটি একটি স্থিতিশীল বাছাই বাস্তবায়ন করা হয়। আমি একটি উইজেট শ্রেণি তৈরি করেছি যাতে আপনার পরীক্ষার ডেটা থাকতে পারে:
public class Widget : IComparable
{
int x;
int y;
public int X
{
get { return x; }
set { x = value; }
}
public int Y
{
get { return y; }
set { y = value; }
}
public Widget(int argx, int argy)
{
x = argx;
y = argy;
}
public int CompareTo(object obj)
{
int result = 1;
if (obj != null && obj is Widget)
{
Widget w = obj as Widget;
result = this.X.CompareTo(w.X);
}
return result;
}
static public int Compare(Widget x, Widget y)
{
int result = 1;
if (x != null && y != null)
{
result = x.CompareTo(y);
}
return result;
}
}
আমি আইকোম্যাপারেবল বাস্তবায়ন করেছি, তাই এটি তালিকা-অনুসারে বাছাই করা যায় ort
যাইহোক, আমি স্থিতিশীল পদ্ধতি তুলনাও প্রয়োগ করেছি, যা কোনও অনুসন্ধান পদ্ধতির প্রতিনিধি হিসাবে পাস হতে পারে।
আমি এই সন্নিবেশ সাজানোর পদ্ধতিটি সি # 411 থেকে ধার নিয়েছি :
public static void InsertionSort<T>(IList<T> list, Comparison<T> comparison)
{
int count = list.Count;
for (int j = 1; j < count; j++)
{
T key = list[j];
int i = j - 1;
for (; i >= 0 && comparison(list[i], key) > 0; i--)
{
list[i + 1] = list[i];
}
list[i + 1] = key;
}
}
আপনি আপনার প্রশ্নে উল্লিখিত বাছাইকারী সহায়ক শ্রেণিতে এটি রাখবেন।
এখন, এটি ব্যবহার করতে:
static void Main(string[] args)
{
List<Widget> widgets = new List<Widget>();
widgets.Add(new Widget(0, 1));
widgets.Add(new Widget(1, 1));
widgets.Add(new Widget(0, 2));
widgets.Add(new Widget(1, 2));
InsertionSort<Widget>(widgets, Widget.Compare);
foreach (Widget w in widgets)
{
Console.WriteLine(w.X + ":" + w.Y);
}
}
এবং এটি ফলাফল:
0:1
0:2
1:1
1:2
Press any key to continue . . .
এটি সম্ভবত কিছু বেনাম প্রতিনিধিদের দ্বারা পরিষ্কার করা যেতে পারে, তবে আমি এটি আপনার কাছে রেখে দেব।
সম্পাদনা : এবং NoBugz বেনামী পদ্ধতির শক্তি প্রদর্শন করে ... সুতরাং, আমার আরও ওল্ডস্কুল বিবেচনা করুন: পি