2013-07-07 53 views
0

我正在處理,我想知道什麼是最好的(最有效的)的方式來訂購一個數組。我基本上希望能夠編寫一個函數,可以使用例如int 3,2,7,29,5,1的數組,並按照1,2,3,5,7,29的順序進行排序。從最小到最大數值排列數組的最有效方法?

我可以找出一些低效的做法,但我正在使用100,000+數字,我不知道如何有效地做到這一點。

對不起,如果這是一個愚蠢的問題!

+3

處理有排序功能會爲你做這個工作,也許比它可以在用戶代碼寫入。請參閱[這裏的API參考](http://processing.org/reference/sort_.html)。代碼看起來像這樣:float [] a = {3,2,7,29,5,1}; a = sort(a);' – Simon

+0

如果您提供一些額外的信息會很有用:您使用的是哪種語言,排序的數字範圍是多少,以及數字的具體分佈是什麼? – pkacprzak

回答

0

那麼......排序數組的最有效方法就是不存在!有1000多種方法可以對數組進行排序,最有效的方法取決於數組內部的數據分佈以及您正在使用的編程語言。

我的猜測是「快速排序」。

0

Sorting algorithms維基百科中有幾個描述。每個算法的性能都是通過計算複雜度來衡量的。

您可以使用幾種編程語言搜索這些算法的實現,具體取決於您的輸入數據或您的使用情況的其他注意事項。

2
import java.util.Arrays; 

int[] arr = new int[]{33,6,2,74,2,73,836,23}; 

void setup(){ 
    Arrays.sort(arr); 
    println(arr); 
} 
+0

此解決方案是普通的Java代碼,使通常與編譯器無關的Processing源代碼鏈接到需要Java的代碼。 –

+0

是的,你是對的,但似乎用戶adm使用*正常*處理。 Java版本比Processing版本更快,問題是關於**最有效的方式**。 – Pwdr

+0

exactly:normal處理包含獨立使用處理API和編程模型的源代碼,詳細信息請參見processing.org,不需要java轉義或導入純java歸檔文件(處理庫需要專門編譯,然後才能在純處理中導入它們環境)。 –