排序中按X降序排列,然後Y.如何使用C#對2D點列表進行排序?
回答
list.Sort((a,b)=>{
int result = a.X.CompareTo(b.X);
if(result==0) result = a.Y.CompareTo(b.Y);
return result;
});
List<Point> sortedList = MyList.Sort(
delegate(Point p1, Point p2)
{
int r = p1.x.CompareTo(p2.x);
if(r.Equals(0)) return p1.y.CompareTo(p2.y);
else return r;
}
);
只能按x排序,而不能先按x然後按y – CodesInChaos 2010-11-13 12:02:18
@CodeInChaos you right - fixed! – UGEEN 2010-11-13 12:11:56
如果評論者確實是正確的,而你正在尋找一個解決一個問題的功課,我懷疑點的列表真正的任務是教你如何對整數值進行排序。所以我會幫助你開始。
提示:的Point
structure有兩個屬性,你可能會發現有用的,X
和Y
,其分別返回座標值這兩個軸。
有很多方法來排序列表。
例如,排序列表從最小的(X,Y)到最大,你可以試試這個算法:
- 列表與第二
- 比較的第一個項目如果第二點是小於第一個
(x1 > x2 || (x1 == x2 && y1 > y2))
然後交換它們 - 比較第二個點和第三個以相同的方式,依此類推,直到您到達列表的末尾
- 回到列表的開頭並運行再次比較,直到最後一個元素
- 重複步驟4,但較早每次停止一個元素,直到你有沒有留下元素進行排序
這是一個低效率的算法,但它會完成這項工作。
爲了更好的算法,看看http://www.sorting-algorithms.com/
的另一種方式馬克Gravell's答案(這將排序列表本身),你在哪裏得到它可以製成一個清單,.ToList()
的IEnumerable<T>
是LINQ語法:
var ordered = from v in yourList
orderby v.X, v.Y
select v;
var orderedList = ordered.ToList();
但除非你不想竟排序列表本身或者你只需要,比方說一個IEnumerable
,List.Sort
會更好。
對於上述案例,LINQ看起來頗爲「時髦」,因爲它很簡單 - 也許它會非常高效。 – UGEEN 2010-11-13 12:15:06
我相信'List.Sort'會更高效一些,但是我不確定,無論如何也沒關係:)但是,應該指出,這兩種解決方案在語義上並不相同(即使'yourList = *使用yourList * .ToList()'查詢),因爲其他人可能會引用舊列表。 – 2010-11-13 12:18:53
- 1. 如何使用子列表對列表進行排序
- 2. 使用OrderBy對列表進行排序
- 3. CompareTo如何對列表進行排序?
- 4. 如何對IEnumerable列表進行排序?
- 5. 如何對列表進行排序?
- 6. 基於第二列對2D列表進行排序
- 7. 如何使用數字排序對varchar列進行排序
- 8. 如何使用Vue.js對錶格列進行排序?
- 9. 如何使用LINQ對列表進行排序?
- 10. 如何使用comboboxC對列表框進行排序#
- 11. 如何使用java 8中的reduce對列表進行排序?
- 12. 如何使用scala對列表進行排序和合並?
- 13. 如何使用bigcommerce v2 api對客戶列表進行排序
- 14. 如何使用java8流對TreeSet列表進行排序
- 15. 如何使用重複鍵對列表進行排序?
- 16. 如何使用javascript對列表進行排序?
- 17. 如何使用lambda和流方法對列表進行排序
- 18. 使用選擇排序根據玩家點數對列表進行排序?
- 19. 使用冒泡排序對列表進行排序
- 20. Java - 對2D數組進行排序
- 21. 如何在對排序列表進行排序時使用operator.itemgetter忽略無值?
- 22. 如何使用排序集中的分數對列表進行排序
- 23. 如何使用'鍵'進行排序:C
- 24. 如何使用foreach對列表中的項目進行排序C#
- 25. 按兩列對列表進行排序
- 26. 排序2D列出重點
- 27. 如何對列表中的列表進行排序?
- 28. 如何對列表/元組進行排序(列表/元組)?
- 29. 如何對段進行排序C++
- 30. 如何對C#Jobject進行排序
如果你正在尋找一些幫助,你曾嘗試過什麼?你寫了哪些代碼不起作用? – 2010-11-13 11:55:49
這不是人們爲你做作業的地方 – 2010-11-13 11:55:50
定義點的順序如何?先x再y,距離原點的距離,...? – Rauhotz 2010-11-13 12:12:43