我正在開發一個組件,它使用一個基於鍵的索引對引用對象(高級字典)的集合中的項進行排序。Sortable Arrays of Comparable Values
比較的機制很好地排序時,密鑰是由一個單一的項目組成,但是當我添加一個更多的維度的複雜性,我失去了排序的精度。
var key1 = new Key{Values=new[]{23,56}};
var key2 = new Key{Values=new[]{23,58}};
// i will be -1 because the first component of key1 is equal to
// the first component of key2
var i = key1.Compare(key2);
要獲取密鑰我使用的代數加法的密鑰的單個組分的比較的排序因素。 我感覺到,我沒有做它的權利,因爲該命令是不尊重時,元件的值具有較高程度的差異
var key1 = new Key{Values=new[]{23,92}};
var key2 = new Key{Values=new[]{33,45}};
// i will be 0 because the first component of key1 is less than
// the first component of key2, but the second component of
// key1 is more than the second component of key2, while I'd
// expect a -1
// -1 + 1 = 0
var i = key1.Compare(key2);
排序是發生錯誤的,因爲關鍵的部件整體考慮的同等重要性,而我想按位置排列比較因子
有沒有人遇到過相同的情況?我錯過了什麼?
注意:考慮到在我的例子中的值進行比較是數值,但在現實中的對象類型是可變的,但所有的IComparable的
你可以給比較方法的源代碼,你的pb的解決方案在那裏。 –