【急】C#中数据提取问题,在线等

星火燎猿 2011-04-09 11:39:26
如题,数据如下:大家先好好研究一下数字在回答,如果问题能够解决再加100分...
1,2,3,2,4,5,6,9,10,15,20,18,17,16,14,13,22,25,28,30,38,36,34,32,31,29...
我现在要的效果是这个样的:
第一次我重以上数据中按顺序提取最小值:最小值肯定是1,最大值是20
第二次的数据13,38依次类推,大家有什么好的想法欢迎一同交流....
...全文
342 54 打赏 收藏 转发到动态 举报
写回复
用AI写文章
54 条回复
切换为时间正序
请发表友善的回复…
发表回复
星火燎猿 2011-04-22
  • 打赏
  • 举报
回复
[Quote=引用 50 楼 bksy2010 的回复:]
[Quote=引用 40 楼 bksy2010 的回复:]

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication3
{
public class Program
……
[/Quote]
不能解决...
星火燎猿 2011-04-21
  • 打赏
  • 举报
回复
[Quote=引用 52 楼 qikaa 的回复:]
估计是想做分页。只提取当前页需要的数据,加快检索速度!
[/Quote]不是做分页
qikaa 2011-04-18
  • 打赏
  • 举报
回复
估计是想做分页。只提取当前页需要的数据,加快检索速度!
星火燎猿 2011-04-18
  • 打赏
  • 举报
回复
[Quote=引用 50 楼 bksy2010 的回复:]
[Quote=引用 40 楼 bksy2010 的回复:]

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication3
{
public class Program
……
[/Quote]经过修改以后应该可以...最近有点忙,等忙完了这段时间,我仔细研究一下。
无牛刀 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用楼主 fwj380891124 的回复:]
如题,数据如下:大家先好好研究一下数字在回答,如果问题能够解决再加100分...
1,2,3,2,4,5,6,9,10,15,20,18,17,16,14,13,22,25,28,30,38,36,34,32,31,29...
我现在要的效果是这个样的:
第一次我重以上数据中按顺序提取最小值:最小值肯定是1,最大值是20
第二次的数据13,38依次类推,大家有什么好的想法欢迎一同交流...……
[/Quote]
我明白你的意思。
int[] nums = {1,2,3,2,4,5,6,9,10,15,20,18,17,16,14,13,22,25,28,30,38,36,34,32,31,29};
int[][] answers = new int[100][2];
int iTemp = 0;
for(int i=0;i<nums.Length-1;i++)
{
if(nums[i]<nums[i+1])
{
//在这一段中找到最大与最小,分别放在answers里面
answers[iTemp][0] = nums[i];
answers[itemp][1] = nums[i+1];
}else
{
//开始下一次
}
}
//最后注意i<nums.Length-1;还有最后一数没比较




Code従業員 2011-04-16
  • 打赏
  • 举报
回复
看了下,大致明白是说什么了,不知道这种数据要来做什么,不如说说初衷,大家可能会给些简单的办法。

还有个问题,如果数据是这样的:2,3,2,4,5,6,15,20,1,9,10

那么最小值取2?因为你分段后不是要跳过一个数么?那1就不算了?
星火燎猿 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 43 楼 andyjianbo 的回复:]
上面的格式没发对,重新发了一遍,希望对你有用。
[/Quote]
谢谢,我会好好研究一下
星火燎猿 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 39 楼 hhqsy 的回复:]
这不是取拐点吗我看
[/Quote]
嗯,可以这么理解
xqy 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 40 楼 bksy2010 的回复:]

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication3
{
public class Program
{
static int minest;
sta……
[/Quote]


40楼 不能解决问题 ?
星火燎猿 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 46 楼 icdbow 的回复:]
看了下,大致明白是说什么了,不知道这种数据要来做什么,不如说说初衷,大家可能会给些简单的办法。

还有个问题,如果数据是这样的:2,3,2,4,5,6,15,20,1,9,10

那么最小值取2?因为你分段后不是要跳过一个数么?那1就不算了?
[/Quote]

嗯,具体的应用场景是这样的,我先在要统计加油信息,但是我这边1分钟采集一条数据,车在行驶的过程中,油量是慢慢下降的,如果车辆加油那么这一段时间里面车的油量一定是在上升,但是这中间有可能出现几条异常数据,需要将这些异常数据去掉统计出我们一个车辆的实际加油量,不知道我这样说你能不能明白。
andyjianbo 2011-04-15
  • 打赏
  • 举报
回复
上面的格式没发对,重新发了一遍,希望对你有用。
andyjianbo 2011-04-15
  • 打赏
  • 举报
回复

using System;

namespace Extremum
{
public class Program
{
static void Main()
{
int[] arr = new int[] { 1, 2, 3, 2, 4, 5, 6, 9, 10, 15, 20, 18, 17, 16, 14, 13, 22, 25, 28, 30, 38, 36, 34, 32, 31, 29 };
int min = arr[0];
int max = arr[0];
for (int i = 1; i < arr.Length; i++)
{
if (arr[i] < min)
{
min = arr[i];
}
else if (arr[i] > max)
{
max = arr[i];
if (arr[i + 1] < arr[i] && arr[i + 2] < arr[i + 1] && arr[i + 3] < arr[i + 2])
{
Console.Write("Min = {0} ", min);
Console.WriteLine("Max = {0}", max);
min = arr[i + 1];
}
}
}
}
}
}
andyjianbo 2011-04-15
  • 打赏
  • 举报
回复
试试这个可不可以达到你要的效果,我运行了一下,和你前面说的结果一样。只是你可能要处理的数据不止这么些,试试吧。


using System;

namespace Extremum
{
public class Program
{
static void Main()
{
int[] arr = new int[] { 1, 2, 3, 2, 4, 5, 6, 9, 10, 15, 20, 18, 17, 16, 14, 13, 22, 25, 28, 30, 38, 36, 34, 32, 31, 29 };
int min = arr[0];
int max = arr[0];
for (int i = 1; i < arr.Length; i++)
{
if (arr[i] < min)
{
min = arr[i];
}
else if (arr[i] > max)
{
max = arr[i];
if (arr[i + 1] < arr[i] && arr[i + 2] <
arr[i + 1] && arr[i + 3] < arr[i + 2])
{
Console.Write("Min = {0} ", min);
Console.WriteLine("Max = {0}", max);
min = arr[i + 1];
}
}
}
}
}
}
xqy 2011-04-15
  • 打赏
  • 举报
回复

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication3
{
public class Program
{
static int minest;
static int maxest;

static void Main(string[] args)
{
int[] array = { 1, 2, 3, 2, 4, 5, 6, 9, 10, 15, 20, 18, 17, 16, 14, 13, 22, 25, 28, 30, 38, 36, 34, 32, 31, 29 };
int newstart = 0;

string[] minmax = new string[10];
for (int i = 0; i < minmax.Length; i++)
{
minmax[i] = GetMinAndMax(ref newstart, array);
}

///minmax is what you want
}


public static string GetMinAndMax(ref int newstart, int[] array)
{
int min = array[newstart];
int max = array[newstart];

for (int i = newstart; i < array.Length; i++)
{
if (array[i] <= min)
min = array[i];
else
{
max = array[i];
if (array[i + 1] < array[i] && array[i + 2] < array[i] && array[i + 3] < array[i])
{
maxest = max;
minest = min;
newstart = i + 1;
break;
}
}

}

return minest.ToString() + "^" + maxest.ToString();

}

}
}
  • 打赏
  • 举报
回复
这不是取拐点吗我看
星火燎猿 2011-04-15
  • 打赏
  • 举报
回复
还有人有更好的想法吗?
星火燎猿 2011-04-14
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 qiyeye 的回复:]
int[] array = { 1, 2, 3, 2, 4, 5, 6, 9, 10, 15, 20, 18, 17, 16, 14, 22, 25, 28, 30, 38, 36, 34, 32, 31, 29};
int min = array[0];
int max = min;
int maxIndex = 0;//Record the max value index
……
[/Quote]
我试试看...
星火燎猿 2011-04-14
  • 打赏
  • 举报
回复
[Quote=引用 35 楼 lwbjyl 的回复:]
引用 33 楼 fwj380891124 的回复:
引用 30 楼 lwbjyl 的回复:
昨晚我花了点时间做了下,但我发现一个问题,比如该集合
1、最后面几个数是这样(前面数据省略其中36为上次的最大值,那本次比较中,从34开始比较 ,那么最大值是否是34,最小值也是34,下一次比较最大值与最小值是32,再下一次最大值与最小值是31,是 这样吗?

首先感谢这位仁兄如此的帮助,最大值不……
[/Quote]
如果是这样的话,可以获取最小值,没有最大值,可以按无效数据不予保存..
Jalan.Wang 2011-04-13
  • 打赏
  • 举报
回复
[Quote=引用 33 楼 fwj380891124 的回复:]
引用 30 楼 lwbjyl 的回复:
昨晚我花了点时间做了下,但我发现一个问题,比如该集合
1、最后面几个数是这样(前面数据省略其中36为上次的最大值,那本次比较中,从34开始比较 ,那么最大值是否是34,最小值也是34,下一次比较最大值与最小值是32,再下一次最大值与最小值是31,是 这样吗?

首先感谢这位仁兄如此的帮助,最大值不是34,而是下一次……
[/Quote]
我知道 你的意思 , 我的意思 是如果 到了最后的几个值,排列是这样的……36,34,32,31,29 相当于最后一组数据吧
星火燎猿 2011-04-13
  • 打赏
  • 举报
回复
[Quote=引用 32 楼 falconfei 的回复:]
怎么有点像HASH算法。不知道你的窗口宽度是多少。
[/Quote]
和窗口宽度有关系吗?
加载更多回复(32)
c#List取出对应的值----dynamic c#List取出对应的值----dynamic  List types = new List();  types.Add(new { ID = item.ID, Name = item.Name, ExpireEndDate = Convert.ToDateTime(startDate).AddDays(1) });  dynamic temp = types[i]...

110,533

社区成员

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

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

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