(高手请帮忙!!)求教算法!!

Nicholasqpl 2003-08-20 10:40:54
有一个int型的数组是1,2,3,4,5,6,7,8,9,10。
要遍立这个数组取的数组第三个数(例如,3,6,9)然后把数组中的值向前移,然后再遍立这个只有七个数的数组,再取这个数组的第三个数,依此类推,直到取得最后一个数为止。然后,放在另一个int型的数组中显示。(万分感激!!)
...全文
56 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Nicholasqpl 2003-08-22
  • 打赏
  • 举报
回复
多谢各位。我已经解决。
xixigongzhu 2003-08-21
  • 打赏
  • 举报
回复
不可能把,你怎么调用的
Nicholasqpl 2003-08-21
  • 打赏
  • 举报
回复
老兄,怎么运行起来是个死循环啊???
xixigongzhu 2003-08-21
  • 打赏
  • 举报
回复
public static int[] Handle(int[] array, int pos){
int[] bb = new int[array.Length];
int count = array.Length;
Buffer.BlockCopy(array, 0, bb, 0, count * 4);
int i = 0, j = 0;
int len = count;
int low = pos - 1;
while (count > low) {
if ((i % pos) == low) {
count--;
} else {
bb[j++] = bb[i];
}
i++;
if (i == len) {
i = 0;
j = 0;
len = count;
}
}
int[] res = new int[count];
Buffer.BlockCopy(bb, 0, res, 0, count * 4);
return res;
}

实际上,无论你取的是第几个,最后的结果都是这个位置的前面几个值。比如,你取第3个,最后的结果便是第一个和第二个。
qqq123 2003-08-21
  • 打赏
  • 举报
回复
public int[] Arrange(int[] array,int start,int step)
{
if(array==null || step<=0)
throw new ArgumentException();
ArrayList origin=new ArrayList(array);
ArrayList result=new ArrayList();
while(step<origin.Count)
{
for(int i=start;i<origin.Count;i+=step)
{
result.Add(origin[i]);
origin.RemoveAt(i);
i--;
}
}
int[] intResult=new int[result.Count];
result.CopyTo(intResult);
return intResult;
}

//使用方法
private void button1_Click(object sender, System.EventArgs e)
{
int[] array=new int[]{1,2,3,4,5,6,7,8,9,10};
int[] newArray=this.Arrange(array,2,3);
}
panyee 2003-08-21
  • 打赏
  • 举报
回复
又见楼主, 昨晚写的那段你也说是死循环, 真不明白, ,, 运行得很好啊
xixigongzhu 2003-08-21
  • 打赏
  • 举报
回复
如果取第三个数,这样调用:
int[] arr = ....;
int[] res = Handle(arr, 3);
Nicholasqpl 2003-08-21
  • 打赏
  • 举报
回复
Buffer.BlockCopy(array, 0, bb, 0, count * 4);
我看不懂????

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧