一个int数组int [ ] = {1,2,3,4,5,8,10,11,12,20}
最后得到这样的形式,1-5,8,10-12,20
有什么好的办法,当然数据很大,算法速度优先
第1个回答 2011-10-14
你确定
1-5
下一个
8
下一个
10-12
下一个
20
???????????
1-5
下一个
8
下一个
10-12
下一个
20
???????????
第2个回答 2011-10-14
我猜是你想要遍历数据,找出其中连续的范围吧,我写了一个,你可以试一下
int ary[10] = {1,2,3,4,5,8,10,11,12,20};
int srindex = 0;
for(int i=0;i<sizeof(ary)/sizeof(int);i++)
{
if(ary[i] - ary[srindex] > i-srindex)
{
if(i-1 == srindex)
cout<<ary[srindex]<<endl;
else
cout<<ary[srindex]<<"-"<<ary[i-1]<<endl;
srindex = i;
}
if(i==9)
{
if(i == srindex)
cout<<ary[srindex]<<endl;
else
cout<<ary[srindex]<<"-"<<ary[i]<<endl;
}
}追问
int ary[10] = {1,2,3,4,5,8,10,11,12,20};
int srindex = 0;
for(int i=0;i<sizeof(ary)/sizeof(int);i++)
{
if(ary[i] - ary[srindex] > i-srindex)
{
if(i-1 == srindex)
cout<<ary[srindex]<<endl;
else
cout<<ary[srindex]<<"-"<<ary[i-1]<<endl;
srindex = i;
}
if(i==9)
{
if(i == srindex)
cout<<ary[srindex]<<endl;
else
cout<<ary[srindex]<<"-"<<ary[i]<<endl;
}
}追问
看完了,基本没问题,不知道你的思路是什么啊?
怎么想到的这个逻辑,想探讨一下。
第3个回答 2011-10-18
如果数组已经是排序好了的,那算法应该很简单。
可以自己尝试写一个,是否需要考虑重复数据?
可以自己尝试写一个,是否需要考虑重复数据?