排序後的數組在bash I'have排序的整數數組,如:我如何在範圍組整數中擊
array[0]=1
array[1]=2
array[2]=3
array[3]=4
array[4]=7
array[5]=9
array[6]=10
array[7]=13
array[8]=15
array[9]=16
而想要獲得輸出像:
1-4 ,7,9-10,13,15-16
有一種簡單而快速的方法來做到這一點?
排序後的數組在bash I'have排序的整數數組,如:我如何在範圍組整數中擊
array[0]=1
array[1]=2
array[2]=3
array[3]=4
array[4]=7
array[5]=9
array[6]=10
array[7]=13
array[8]=15
array[9]=16
而想要獲得輸出像:
1-4 ,7,9-10,13,15-16
有一種簡單而快速的方法來做到這一點?
我不知道有任何標準的做法,但不應該很難寫出自己的功能來做到這一點。東西的線:
對於預先排序的非空整數數組,應該足夠簡單:
(對不起,關於格式化,我目前在一臺帶有PC鍵盤的Mac上,並且我沒有很好地相處。 )
thxs爲答案吉特,我最初的方法是迭代數組元素,看看是否當前元素等於上一個元素-1,如果不是以過去元素結束當前範圍並開始新範圍。但我認爲應該有一個更優雅的方式來做到這一點。 –
是的,這是我試圖解釋的同樣的方法。就像檢查'(curr-1)== prev'一樣,你需要將起始元素的索引/值保存在一個範圍內,因爲它的範圍可能會超過幾個元素。關於解決方案:有人必須遍歷數組,無論是你的代碼,外部腳本還是其他二進制文件都取決於你:) – Jite
非常感謝,我接受了你的答案。將繼續採用這種方法。同樣值得注意的是,如果起始元素等於rage中的最後一個元素,則只打印元素而不是starting_element-last_element。 –
對不起我的錯誤,已經糾正了這個問題。它是一個整數的排序數組。 –
這個分組是否有任何邏輯,或者它只是隨機的? – anubhava
對我來說,它看起來像它的連續數字分組?像11,12,13,15變成11-13,15 – Jite