[Extension Method]使用擴充方法來做二維陣列排序
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方法,並傳入要排序依據的索引即可。