如果我有一個浮點數列表,包含:Infinity,-Infinity,其他隨機十進制數和一個NaN。在列表排序後,NaN應該在哪裏?我使用冒泡排序是否有幫助排序包含NaN的列表
回答
您不能排序浮點值NaN的使用<=
作爲比較,因爲<=
不是浮點值的順序包括NaN
包括列表:它不是反身( NaN <= NaN
將不得不保持爲<=
是反身性的。
您正打破排序算法的先決條件。任何事情都可能發生。
爲了排序,您需要一致的順序,這意味着,例如,爲NaN制定排序規則。
幸運的是,這項工作已經在Java中完成了。 java.lang.Double
是Comparable
,它的compareTo
使用擴展規則,包括「通過這種方法認爲Double.NaN等於其自身並且大於所有其他雙值(包括Double.POSITIVE_INFINITY)」。
它也有一個compare方法比較使用這些擴展規則的兩個雙基元,而不是<=
等規則。
如果你使用Java編程,你可以直接在你的排序中使用它。如果您使用的是float
而不是double
,請參閱java.lang.Float
中的相應方法。如果您使用其他語言進行編程,您仍然可以從Java中讀取和複製規則,並在比較函數中使用它們。
如果你在你的排序中使用它,你應該預期NaN
在排序列表的最後,所有有限值和正無窮大之後。
感謝您的提示,我不知道這一點。我在此鏈接找到了「compareTo」的文檔:http://docs.oracle.com/javase/7/docs/api/java/lang/Double.html – njuffa 2015-02-06 15:51:11
NaN將放置在排序數組的開始或結尾,具體取決於所討論的Bubble Sort的實現。
這完全取決於您如何定義您的訂購標準。
- 1. 比較包含NaN的列表
- 2. 排序包含字典列表在Python
- 3. C++排序列表包含類
- 4. CALayer位置包含NaN:[nan -__]
- 5. 排序包含列表對象的列表每個排序依據
- 6. MongoDB $包含NaN值
- 7. Datatables html排序與包含無序列表的數據
- 8. 提供排名數字包含python排序元組列表
- 9. 查找包含NaN的
- 10. 排序一個表包含表格
- 11. 序列化列表包含散列表
- 12. 試圖將包含許多列的SQL Server表排序爲只包含兩列的列表
- 13. Pyspark - 排序數據框中列包含列表
- 14. 重新排列包含按時間順序日期列表
- 15. 的Jinja2 /瓶:當列表中包含排序錯誤無的
- 16. 排序基於類的私有成員包含類的列表
- 17. 對包含python類中的對象的列表排序
- 18. 排序包含java中的對象的數組列表
- 19. 如何對包含值'Absent'的數據表排序列進行排序也
- 20. 排序在Python中 - 如何排序包含字母數字值的列表?
- 21. 如何解決CALayerInvalidGeometry',原因:'CALayer的位置包含NaN:[nan nan]?
- 22. 帶'包含'列表和'排除'列表的正則表達式
- 23. C# - 使用LINQ排序包含鍵/值對的列表框
- 24. 對包含自定義類的列表進行排序
- 25. 對包含SQL數據的HTML表格列進行排序
- 26. 排序一個NSDictionary(其中包含我的Facebook好友列表)
- 27. 爲ID列表包含多個周圍的行(按ID排序)
- 28. 在C#中對包含網格控件的列表框排序#
- 29. 排序包含數字字符串的元組列表
- 30. C#排序包含數字的字符串列表
歡迎來到Stack Overflow。這不是在這裏提出問題的好方法。你有沒有嘗試解決你的問題?首先顯示你的努力,以便人們可以展示他們的努力請閱讀[常見問題](http://stackoverflow.com/tour),[如何問](http://stackoverflow.com/help/how-to-ask)和[幫助中心](http:// stackoverflow .com/help)作爲開始。 – 2015-02-06 13:00:52
有沒有問題要解決,它的一個問題,並在要求答案 – 2015-02-06 13:10:15
什麼語言? Java有一個簡單的答案。 – 2015-02-06 13:55:50