這是一個面試問題。在單行中排序偶數和奇數
說你有一個像這樣
{54,23,545,65,23,4,1,2,5}
數組如何排序併爲偶數或奇數在一行代碼分類?
答案的複雜性順序應該是O(1),而不使用任何for
循環。結果應該是:
{2,4,54,1,5,23,23,65,545}
這是一個面試問題。在單行中排序偶數和奇數
說你有一個像這樣
{54,23,545,65,23,4,1,2,5}
數組如何排序併爲偶數或奇數在一行代碼分類?
答案的複雜性順序應該是O(1),而不使用任何for
循環。結果應該是:
{2,4,54,1,5,23,23,65,545}
如果實例化和使用匿名實現Comparator
可以考慮單行:
Arrays.sort(arr, new Comparator<Integer>(){public int compare(Integer o1, Integer o2) {return o1%2 == o2%2 ? o1.compareTo(o2) : (o1%2 == 0 ? -1 : 1); }});
+1,這是一個正確的答案和簡單的智能:) – anshulkatta
這是我所期望的,真棒在谷歌搜索。沒有得到這個希望的答案,所以在將來它會在面試中很有用 – Sathish
@Xavi,我們可以用Comparable來做到這一點,如果是這樣,你可以添加回答? – anshulkatta
太可惜了,沒有標記爲Scala:'array.sortBy(n =>(n%2!= 0,n))'做的工作 – Beryllium
@Beryllium但是如果你使用複雜度應該是O(1)模數,那麼我們必須使用for循環 – Sathish
這兩種解決方案最終都使用快速排序,因此總體複雜度從來就不是O(1)。在Java解決方案中,Scala解決方案中的表達式可能被稱爲經常比較,所以我在這裏沒有看到區別。區別在於使用元組和一種基於元組進行比較的排序方法。 – Beryllium