2012-02-08 20 views
1

怎麼說,級向上/向下APL爲了

⌽(⍒'Hello') 

1 2 4 3 5 

⍋'Hello' 

1 2 3 4 5 

我是APL的新手,偶然偶然發現它。我只是想知道爲什麼第二個在第一個之前。

回答

2

您正在使用檔次爲和檔次爲作爲monadic基元。

根據定義級向上返回索引的整數陣列,其指定表達式的排序順序跟隨它,在升序順序。如果任何元素相等(在您的示例中是兩個字母l),則它們將按照它們出現在輸入表達式中的順序出現在結果中。因此,⍋'Hello'返回1 2 3 4 5。兩個l的順序相同,即第三個字符(第一個字母l)在第四個字符(第二個字母l)之前。

根據定義級向下也返回索引的整數陣列,其指定表達式的排序順序跟隨它,在降序順序。如果任何元素相同(在你的例子中是兩個字母l),它們也將以結果出現在表達式中的順序出現。因此,⍒'Hello'返回5 3 4 2 1。這兩個人依然是同一個秩序,因爲他們是平等的。 當您應用旋轉時,您看到的整數數組會變爲1 2 4 3 5

您看到的結果正是預期給定函數的定義方式以及它們如何處理相同的值。

如果您想查看更極端的示例,請比較以下兩個數組的輸出。創建具有10個元素的每個具有1 10⍴1相同的值,然後嘗試等級up功能,然後嘗試等級下降功能的數組:

⍋10⍴1 

⍒10⍴1 

它們都將產生相同的結果:

1 2 3 4 5 6 7 8 9 10 
+0

因此,當相同的標量連續出現幾次時,無論發生什麼,它都會從低到高返回? – f2lollpll 2012-02-17 08:50:00

+0

是的。當相同的標量出現時(它們不必相鄰),函數都需要規則,並且實現的規則是相信它們呈現的順序是正確的,因此它保留它。說從低到高並不是真的正確。它從左到右會更好,我認爲。 – 2012-02-17 13:54:41

0

等級上升⍋和等級下降⍒基元保持相等元素的等級。正如其他人所說,必須有一個平等的論據。但是這條規則的優點是它允許多鍵排序。 也就是說,如果您有一個包含多個關聯關鍵字的數組,那麼通過對每個關鍵字從最不重要到最重要進行排序,您可以獲得按最重要關鍵字排序的結果,其中等於按第二個重要關鍵字排序,前兩名按第三名排序,依此類推。爲此,索引向量必須被捕獲並用於更新所有密鑰和數據以保持其同步。或者它們可以存儲在一個嵌套結構中,在這種情況下,它們會自動保持適當的相對順序。

+0

多鍵條件可以組合成一個有效的比較函數,然後在不穩定的排序下正常工作。 (唯一的含義是順序並不保留那些在每一個單一鍵上都相同的元素。)如果我們希望保留那些我們在比較中沒有考慮到的鍵,那麼就需要穩定的排序。例如。按姓氏排序,但對於相同姓氏的運行,請按順序保留名字:這要求按姓氏進行穩定排序。 – Kaz 2017-11-24 00:29:49

相關問題