分组算法

<pre name="code" class="html">			
			private function statistics(answerStatAC:ArrayCollection):void
			{
				if (CollectionUtil.isEmpty(answerStatAC))
					return;
				var tempAC:ArrayCollection=new ArrayCollection;


				var total_count:int=0;
				var full_score_count:int=0;


				/**
				var dic:Dictionary = new Dictionary;
				for (var j:int = 0; j < listAnswerStatAC.length; j++)
				{
					var lasObj:Object = listAnswerStatAC.getItemAt(j);
					var index:int = int(lasObj[0]);
					
					if(dic[index] == null)
					{
						var ac:ArrayCollection = new ArrayCollection;
						ac.addItem(lasObj);
						dic[index] = ac;
					}else
					{
						(dic[index] as ArrayCollection).addItem(lasObj);
					}
					//objDict必须实现构造好
					var eq:DcExamQuestion = objDict[index] as DcExamQuestion;
					if(eq.subQuestions == null)
						eq.subQuestions = new ArrayCollection;
					eq.subQuestions.addItem(lasObj);//第一次创建并添加,和与此对象同编号的对象添加
				}
				**/
			
				//下面的算法假设数据的编号是按顺序依次排列好的
				var o:Object=answerStatAC.getItemAt(0);
				var idx:int=int(o[0]);
				var chartAC:ArrayCollection=new ArrayCollection;
				var deq:DcExamQuestion;
				for (var i:int=0; i < answerStatAC.length; i++)
				{
					var chartItem:Object;
					var item:Object=answerStatAC.getItemAt(i);
					var index:int=int(item[0]);//题号
					var answer:String=item[1];//答案
					var count:int=int(item[2]);//此答案人数
					if (answer == "")
						answer="未作答";
					
					if (idx == index)//等于此题号
					{
						total_count += count;//计算各个答案总人数
						deq = objDict[index];//找出此题的标准答案
						
						chartItem = {answer: answer, count: count};
						chartAC.addItem(chartItem);
						
						if (i == answerStatAC.length - 1 && deq)
						{
							var lastRow:Object=getStatRowItem(idx, deq.eqDisplayName, deq.eqCorrectAnswer, full_score_count, total_count, chartAC);
							tempAC.addItem(lastRow);
						}
					}
					else
					{
						deq = objDict[idx];//此题的正确答案
						
						if (deq)
						{
							var row:Object = getStatRowItem(idx, deq.eqDisplayName, deq.eqCorrectAnswer, full_score_count, total_count, chartAC);
							tempAC.addItem(row);
						}


						idx = index; //将上一次类型索引记录,用于下一种类型索引的比较
						total_count = count; //下一种类型的累计初始值
						full_score_count = 0;
						chartAC = new ArrayCollection;
						chartItem = {answer: answer, count: count};
						chartAC.addItem(chartItem);
					}


				}
				questionRatioAC=tempAC;
			}

先把以前写的例子和一个参考的代码附上,以后详细研究分组算法.目前已经想到一种分组统计的算法,就是统一组后,那一组的数据顺便删除掉.(克隆的数据),并不删除元数据.这样分组效率会越来越高.


</pre><pre>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值