[Extension Method]使用擴充方法來做二維陣列排序

整理一下回問題所寫的二維陣列排序擴充方法


static class ArrayExtension
{
public static void Sort<T>(this T[,] array,int d2Idx)
{
int count = array.GetLength(0);

T[] tempArray = new T[count];
for (int idx = 0; idx < count; ++idx)
{
tempArray[idx] = array[idx, d2Idx];
}
Array.Sort(tempArray);

for (int idx = 0; idx < count; ++idx)
{
T tempValue = tempArray[idx];
for (int idx2 = idx+1; idx2 < count; ++idx2)
{
if (array[idx2, d2Idx].Equals(tempValue))
{
array.Swap(idx, d2Idx, idx2, d2Idx);
int d2Idx2 = (d2Idx == 0) ? 1 : 0;
array.Swap(idx, d2Idx2, idx2, d2Idx2);
}
}
}
}

public static void Swap<T>(this T[,] array, int idx1, int idx2, int targetIdx1, int targetIdx2)
{
T temp;
temp = array[targetIdx1, targetIdx2];
array[targetIdx1, targetIdx2] = array[idx1, idx2];
array[idx1, idx2] = temp;
}

使用上呼叫Sort方法,並傳入要排序依據的索引即可。