日本好好热aⅴ|国产99视频精品免费观看|日本成人aV在线|久热香蕉国产在线

  • <cite id="ikgdy"><table id="ikgdy"></table></cite>
    1. 西西軟件下載最安全的下載網(wǎng)站、值得信賴的軟件下載站!

      首頁編程開發(fā)其它知識(shí) → 用Erlang實(shí)現(xiàn)快速排序算法

      用Erlang實(shí)現(xiàn)快速排序算法

      相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來源:西西整理時(shí)間:2012/12/10 17:17:44字體大。A-A+

      作者:西西點(diǎn)擊:0次評(píng)論:0次標(biāo)簽: 算法

      • 類型:編程輔助大小:1.0M語言:中文 評(píng)分:9.0
      • 標(biāo)簽:
      立即下載

      Erlang是一個(gè)結(jié)構(gòu)化,動(dòng)態(tài)類型編程語言,內(nèi)建并行計(jì)算支持。最初是由愛立信專門為通信應(yīng)用設(shè)計(jì)的,比如控制交換機(jī)或者變換協(xié)議等,因此非常適 合于構(gòu)建分布式,實(shí)時(shí)軟并行計(jì)算系統(tǒng)。

      使用Erlang編寫出的應(yīng)用運(yùn)行時(shí)通常由成千上萬個(gè)輕量級(jí)進(jìn)程組成,并通過消息傳遞相互通訊。進(jìn)程間上下文切換對(duì)于Erlang來說僅僅 只是一兩個(gè)環(huán)節(jié),比起C程序的線程切換要高效得多得多了。

      使用Erlang來編寫分布式應(yīng)用要簡(jiǎn)單的多,因?yàn)樗姆植际綑C(jī)制是透明的:對(duì)于程序來說并不知道自己是在分布式運(yùn)行。

      Erlang運(yùn)行時(shí)環(huán)境是一個(gè)虛擬機(jī),有點(diǎn)像Java虛擬機(jī),這樣代碼一經(jīng)編譯,同樣可以隨處運(yùn)行。它的運(yùn)行時(shí)系統(tǒng)甚至允許代碼在不被中斷的情況下更新。另外如果你需要更高效的話,字節(jié)代碼也可以編譯成本地代碼運(yùn)行。

      Yaws: 一個(gè)Erlang寫的服務(wù)器,據(jù)說并發(fā)能是apache的15倍

      排序算法的原理無需多說,直接上代碼

      1 -module(quicksort).
      2 -export([start/1]).
      3
      4 %% 程序入口
      5 %% List:用戶輸入的待排序的數(shù)值列表
      6 start(List) ->
      7     SortedList = calu(List),
      8     io:format("sorted list:~w~n", [SortedList]).
      9
      10 %% 得到排序后的數(shù)值列表
      11 calu([Key|RestList]) ->
      12     {LittleList, GreatList} = calu_sort(Key, RestList, [], []),
      13     calu(LittleList) ++ [Key] ++ calu(GreatList);
      14 calu([]) ->
      15     [].
      16
      17 %% 快速排序算法
      18 %% Key:列表中的第一個(gè)元素
      19 %% [Element|RestElements]:列表中的其它元素
      20 %% LittleList:小于等于Key的數(shù)值組成的列表
      21 %% GreatList:大于Key的數(shù)值組成的列表
      22 calu_sort(Key, [Element|RestElements], LittleList, GreatList) ->
      23     if
      24         Element =< Key ->
      25             calu_sort(Key, RestElements, [Element] ++ LittleList, GreatList);
      26         Element > Key ->
      27             calu_sort(Key, RestElements, LittleList, [Element] ++ GreatList)
      28     end;
      29 calu_sort(_Key, [], LittleList, GreatList) ->
      30     {LittleList, GreatList}.

      注意事項(xiàng):代碼第一次運(yùn)行的時(shí)候,結(jié)果怎么都不對(duì),調(diào)試之后發(fā)現(xiàn)問題出在24行的Element =< Key(變量)表達(dá)式,寫成了Element =< key(原子),由于Element是數(shù)值,key是原子,根據(jù)Erlang的排序規(guī)則,數(shù)值小于原子,所以結(jié)果不正確。由于變量名必須以大寫開始,需要按住shirt鍵輸入,有時(shí)候不注意沒按住shirt就變成了原子。

      這種問題在其它編程語言中是很難出現(xiàn)的,對(duì)于靜態(tài)類型語言,直接就給出未定義符號(hào)的編譯錯(cuò)誤,對(duì)于動(dòng)態(tài)語言,不同類型的數(shù)據(jù)一般是不予比較的。所以在Erlang編程中要萬分小心,不要把變量名寫成原子,否則會(huì)出現(xiàn)編譯通過而運(yùn)行時(shí)出現(xiàn)各種異常結(jié)果的情況

        相關(guān)評(píng)論

        閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

        • 8 喜歡喜歡
        • 3 頂
        • 1 難過難過
        • 5 囧
        • 3 圍觀圍觀
        • 2 無聊無聊

        熱門評(píng)論

        最新評(píng)論

        發(fā)表評(píng)論 查看所有評(píng)論(0)

        昵稱:
        表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
        字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過審核才能顯示)
        推薦文章

        沒有數(shù)據(jù)