排序后的数组在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