2012-01-09 53 views
0

所以,.Net和Java已經把我寵壞不是學習任何排序算法「需要」,但現在我是一個需要在不同的語言排序數組沒有這種奢侈。我能夠在沒有問題的情況下進行泡沫分類。然而,有些消息來源討厭使用泡沫排序,因爲n^2比較的平均和最壞情況的可怕表現。泡沫排序似乎可以完成工作,但是要解決一個擁有10萬個元素的陣列,並且讓我擔心在這種程度下性能可能成爲問題。另一方面,其他一些算法在複雜性方面看起來非常嚇人。我的問題是,在更好的性能方面,泡沫分類會是一個不錯的後續行動,但是在實施過程中不會進入複雜的荒地?排序算法對於一個新手來說

作爲一個方面說明,我是分析師,由於所需要的程序,而不是一個CS專業。不用說,我的編程專業知識已經填補了一些漏洞。感謝:)

+0

quicksort被廣泛使用 – 2012-01-09 15:27:12

+1

請選擇:http:// stackoverflow。COM /問題/ 3345869 /搜索排序算法 - 有 - -A-GOF樣上市換他們 – 2012-01-09 15:34:10

回答

1

many options,每個都有自己的權衡。正如你所發現的,Bubble Sort的折衷是它(a)簡單,但(b)即使是遠程大型數組也很慢。

  • Quicksort是一個很好的,但你可能會遇到內存問題。
  • 我用Heapsort取得了很大的成功,但不能保證穩定(儘管我從來沒有遇到過問題)。
  • Bogosort很有趣地實施和談論,但完全不切實際。
  • 等等...

有要排序的數據有很好的理解可以幫助一個決定哪種算法是最好的。例如:

  • 數組有多大?
  • 有它已經排序或部分排序的機會呢?
  • 數組包含什麼樣的數據?
  • 比較數組中兩個元素的難度/代價是多少?
  • 確定數組是否被排序有多難度/昂貴?
  • 等等...

沒有一個排序算法,這比所有其他人更好。選擇適合你需求的東西,你會隨着時間的推移和練習而選擇。

0

花時間學習Quicksort,這是一個很好的算法,如果你放慢速度就不那麼複雜。

如果你想要一些排序算法只是爲了讓你的腳弄溼(之三),我會建議插入排序和選擇排序,它們通常比冒泡排序更好,快速理解和實現。合併排序在算法課程中也很常見。不過,你會更好地使用快速排序。

您還應該瞭解穩定排序和非穩定排序之間的區別,如果您還沒有。穩定的排序不會改變具有相同鍵的項目的順序,而不穩定可能。

相關問題