求算法

sw47 2003-09-19 11:40:58
比如1[0],2[1],3[0],4[1],5[2],6[2],7[2],8[0],9[1]
我想通过循环取出1[0],3[0],8[0]规则是[]内数字相同的
剩下的再循环取出2[1],4[1],9[1]
剩下的再取出5[2].....
如何作效率最高?


类似这样

array(1,0,2,1,3,0,4,1,5,2,6,2,7,2,8,0,9,1)
2个一组,谢谢
...全文
74 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2003-09-19
  • 打赏
  • 举报
回复
没太明白楼主的意思,看讨论应该化为排序问题。排序可以使具有相同的键的项连在一起。

<script>
info=new Array("党员....忽略上面已给出的数据");

ar = new Array(); // 工作数组
for(i=0,j=0;i<info.length;i+=6,j++) 按6个一组分开
ar[j] = info.slice(i,i+6);

ar.sort(cmd); // 排序

for(i=0;i<ar.length;i++) // 输出
document.write(ar[i]+"<br>");

function cmd(a,b) { // 排序回调函数,下表表示要排序的列
if(a[1] == b[1]) return 0;
return a[1] > b[1] ? 1 : -1;
}
</script>
sw47 2003-09-19
  • 打赏
  • 举报
回复
傻皮批,光取出来是没有用的,现在是数组结构乱套了,正改呢
gaobochina 2003-09-19
  • 打赏
  • 举报
回复
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE></TITLE>
<script language=javascript>
function window_onload()
{
var infonew1=new Array()
var infonew2=new Array()
var infonew3=new Array()
var step=0
for(i=0;i<info.length-1;i+=6)
{
if(info[i+5]!=info[i+11])
{
infonew1[step]=info[i+5]
step=step+1
}
}
var step1=0
var str=""
for(i=0;i<infonew1.length;i++)
{
str=""
for(j=0;j<info.length-1;j+=6)
{
if(info[j+5]==infonew1[i])
{
str=str+info[j]+"?"+info[j+1]+"?"+info[j+2]+"?"+info[j+3]+"?"+info[j+4]+"?"+info[j+5]+"$"
}
}

infonew2[i]=str

}


alert(infonew2[0])
alert(infonew2[1])
alert(infonew2[2])


}
</script>

</HEAD>
<BODY onload="window_onload()">



</BODY>
</HTML>
<script language=javascript>
<!--
var info=new Array("党员基本情况登记表","CADA",241,1,1,"党员基本情况登记表","hkhkjtemp","CADA",1569,1,1,"党员基本情况登记表","thetemp","CADA",1571,1,1,"党员基本情况登记表","申请入党人员登记表","CADA",242,1,2,"申请入党人员登记表","入党积极分子登记表","CADA",243,1,3,"入党积极分子登记表","党员组织关系变动登记表","CADA",244,1,4,"党员组织关系变动登记表","党员责任区划分表","CADA",245,1,5,"党员责任区划分表","党内主题活动记录","CADA",246,2,6,"党内主题活动记录","党员大会会议记录","CADA",247,2,7,"党员大会会议记录","党支部委员会会议记录","CADA",248,2,8,"党支部委员会会议记录","民主生活会会议记录","CADA",249,2,9,"民主生活会会议记录","党课记录","CADA",250,2,10,"党课记录","党员季度讲评记录","CADA",251,2,11,"党员季度讲评记录","党员季度讲评记录gai","CADA",1570,2,11,"党员季度讲评记录","厂务公开工会共青团工作记录","CADA",252,3,12,"厂务公开工会共青团工作记录","管理人员学习记录","CADA",253,3,13,"管理人员学习记录","季度职工队伍思想分析","CADA",254,3,14,"季度职工队伍思想分析","党支部年度工作总结","CADA",255,3,15,"党支部年度工作总结","公益活动记录","CADA",256,3,16,"公益活动记录","党支部季度工作考核意见","CADA",257,4,17,"党支部季度工作考核意见","党员奖惩情况记录表","CADA",258,4,18,"党员奖惩情况记录表","劳动纪律检查考核记录","CADA",259,4,19,"劳动纪律检查考核记录","党员缴纳党费登记表","CADA",260,4,20,"党员缴纳党费登记表","精神文明建设记录","CADA",261,3,21,"精神文明建设记录","班组建设检查考核记录","CADA",262,4,22,"班组建设检查考核记录","职工文明行为检查考核记录","CADA",263,4,23,"职工文明行为检查考核记录","党支部达标年度考核意见","CADA",264,4,24,"党支部达标年度考核意见","");
-->
</script>

gaobochina 2003-09-19
  • 打赏
  • 举报
回复
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE></TITLE>
<script language=javascript>
function window_onload()
{
var infonew1=new Array()
var infonew2=new Array()
var infonew3=new Array()
var step=0
for(i=0;i<info.length-1;i+=6)
{
if(info[i+5]!=info[i+11])
{
infonew1[step]=info[i+5]
step=step+1
}
}
var step1=0
var str=""
for(i=0;i<infonew1.length;i++)
{
str=""
for(j=0;j<info.length-1;j+=6)
{
if(info[j+5]==infonew1[i])
{
str=str+info[j]+"?"+info[j+1]+"?"+info[j+2]+"?"+info[j+3]+"?"+info[j+4]+"?"+info[j+5]+"$"
}
}

infonew2[i]=str

}

alert(infonew2)



}
</script>

</HEAD>
<BODY onload="window_onload()">



</BODY>
</HTML>
<script language=javascript>
<!--
var info=new Array("党员基本情况登记表","CADA",241,1,1,"党员基本情况登记表","hkhkjtemp","CADA",1569,1,1,"党员基本情况登记表","thetemp","CADA",1571,1,1,"党员基本情况登记表","申请入党人员登记表","CADA",242,1,2,"申请入党人员登记表","入党积极分子登记表","CADA",243,1,3,"入党积极分子登记表","党员组织关系变动登记表","CADA",244,1,4,"党员组织关系变动登记表","党员责任区划分表","CADA",245,1,5,"党员责任区划分表","党内主题活动记录","CADA",246,2,6,"党内主题活动记录","党员大会会议记录","CADA",247,2,7,"党员大会会议记录","党支部委员会会议记录","CADA",248,2,8,"党支部委员会会议记录","民主生活会会议记录","CADA",249,2,9,"民主生活会会议记录","党课记录","CADA",250,2,10,"党课记录","党员季度讲评记录","CADA",251,2,11,"党员季度讲评记录","党员季度讲评记录gai","CADA",1570,2,11,"党员季度讲评记录","厂务公开工会共青团工作记录","CADA",252,3,12,"厂务公开工会共青团工作记录","管理人员学习记录","CADA",253,3,13,"管理人员学习记录","季度职工队伍思想分析","CADA",254,3,14,"季度职工队伍思想分析","党支部年度工作总结","CADA",255,3,15,"党支部年度工作总结","公益活动记录","CADA",256,3,16,"公益活动记录","党支部季度工作考核意见","CADA",257,4,17,"党支部季度工作考核意见","党员奖惩情况记录表","CADA",258,4,18,"党员奖惩情况记录表","劳动纪律检查考核记录","CADA",259,4,19,"劳动纪律检查考核记录","党员缴纳党费登记表","CADA",260,4,20,"党员缴纳党费登记表","精神文明建设记录","CADA",261,3,21,"精神文明建设记录","班组建设检查考核记录","CADA",262,4,22,"班组建设检查考核记录","职工文明行为检查考核记录","CADA",263,4,23,"职工文明行为检查考核记录","党支部达标年度考核意见","CADA",264,4,24,"党支部达标年度考核意见","");
-->
</script>

gaobochina 2003-09-19
  • 打赏
  • 举报
回复
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE></TITLE>
<script language=javascript>
function window_onload()
{
var infonew1=new Array()
var infonew2=new Array()
var infonew3=new Array()
var step=0
for(i=0;i<info.length-1;i+=6)
{
if(info[i+5]!=info[i+11])
{
infonew1[step]=info[i+5]
step=step+1
}
}
var step1=0

for(i=0;i<infonew1.length;i++)
{
step=0
for(j=0;j<info.length-1;j+=6)
{
if(info[j+5]==infonew1[i])
{
infonew2[step1]=info[j];
infonew2[step1+1]=info[j+1];
infonew2[step1+2]=info[j+2];
infonew2[step1+3]=info[j+3];
infonew2[step1+4]=info[j+4];
infonew2[step1+5]=info[j+5];
step1=step1+6;
step=step+6
}
}
infonew3[i]=step

}
alert(infonew2)
alert(infonew3)


}
</script>

</HEAD>
<BODY onload="window_onload()">



</BODY>
</HTML>
<script language=javascript>
<!--
var info=new Array("党员基本情况登记表","CADA",241,1,1,"党员基本情况登记表","hkhkjtemp","CADA",1569,1,1,"党员基本情况登记表","thetemp","CADA",1571,1,1,"党员基本情况登记表","申请入党人员登记表","CADA",242,1,2,"申请入党人员登记表","入党积极分子登记表","CADA",243,1,3,"入党积极分子登记表","党员组织关系变动登记表","CADA",244,1,4,"党员组织关系变动登记表","党员责任区划分表","CADA",245,1,5,"党员责任区划分表","党内主题活动记录","CADA",246,2,6,"党内主题活动记录","党员大会会议记录","CADA",247,2,7,"党员大会会议记录","党支部委员会会议记录","CADA",248,2,8,"党支部委员会会议记录","民主生活会会议记录","CADA",249,2,9,"民主生活会会议记录","党课记录","CADA",250,2,10,"党课记录","党员季度讲评记录","CADA",251,2,11,"党员季度讲评记录","党员季度讲评记录gai","CADA",1570,2,11,"党员季度讲评记录","厂务公开工会共青团工作记录","CADA",252,3,12,"厂务公开工会共青团工作记录","管理人员学习记录","CADA",253,3,13,"管理人员学习记录","季度职工队伍思想分析","CADA",254,3,14,"季度职工队伍思想分析","党支部年度工作总结","CADA",255,3,15,"党支部年度工作总结","公益活动记录","CADA",256,3,16,"公益活动记录","党支部季度工作考核意见","CADA",257,4,17,"党支部季度工作考核意见","党员奖惩情况记录表","CADA",258,4,18,"党员奖惩情况记录表","劳动纪律检查考核记录","CADA",259,4,19,"劳动纪律检查考核记录","党员缴纳党费登记表","CADA",260,4,20,"党员缴纳党费登记表","精神文明建设记录","CADA",261,3,21,"精神文明建设记录","班组建设检查考核记录","CADA",262,4,22,"班组建设检查考核记录","职工文明行为检查考核记录","CADA",263,4,23,"职工文明行为检查考核记录","党支部达标年度考核意见","CADA",264,4,24,"党支部达标年度考核意见","");
-->
</script>

sw47 2003-09-19
  • 打赏
  • 举报
回复
根本没理解我的意思
gaobochina 2003-09-19
  • 打赏
  • 举报
回复
这个应该能够达到你的要求了吧!
1000多的也就2秒钟!
gaobochina 2003-09-19
  • 打赏
  • 举报
回复
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE></TITLE>
<script language=javascript>
function window_onload()
{
var infonew1=new Array()
var infonew2=new Array()
var infonew3=new Array()
var step=0
for(i=0;i<info.length-1;i+=6)
{
if(info[i+5]!=info[i+11])
{
infonew1[step]=info[i+5]
step=step+1
}
}
var step1=0

for(i=0;i<infonew1.length;i++)
{
step=0
for(j=0;j<info.length-1;j+=6)
{
if(info[j+5]==infonew1[i])
{
infonew2[step1]=info[j+5];
step1=step1+1;
step=step+1
}
}
infonew3[i]=step

}
alert(infonew2)
alert(infonew3)
}
</script>

</HEAD>
<BODY onload="window_onload()">



</BODY>
</HTML>
<script language=javascript>
<!--
var info=new Array("党员基本情况登记表","CADA",241,1,1,"党员基本情况登记表","hkhkjtemp","CADA",1569,1,1,"党员基本情况登记表","thetemp","CADA",1571,1,1,"党员基本情况登记表","申请入党人员登记表","CADA",242,1,2,"申请入党人员登记表","入党积极分子登记表","CADA",243,1,3,"入党积极分子登记表","党员组织关系变动登记表","CADA",244,1,4,"党员组织关系变动登记表","党员责任区划分表","CADA",245,1,5,"党员责任区划分表","党内主题活动记录","CADA",246,2,6,"党内主题活动记录","党员大会会议记录","CADA",247,2,7,"党员大会会议记录","党支部委员会会议记录","CADA",248,2,8,"党支部委员会会议记录","民主生活会会议记录","CADA",249,2,9,"民主生活会会议记录","党课记录","CADA",250,2,10,"党课记录","党员季度讲评记录","CADA",251,2,11,"党员季度讲评记录","党员季度讲评记录gai","CADA",1570,2,11,"党员季度讲评记录","厂务公开工会共青团工作记录","CADA",252,3,12,"厂务公开工会共青团工作记录","管理人员学习记录","CADA",253,3,13,"管理人员学习记录","季度职工队伍思想分析","CADA",254,3,14,"季度职工队伍思想分析","党支部年度工作总结","CADA",255,3,15,"党支部年度工作总结","公益活动记录","CADA",256,3,16,"公益活动记录","党支部季度工作考核意见","CADA",257,4,17,"党支部季度工作考核意见","党员奖惩情况记录表","CADA",258,4,18,"党员奖惩情况记录表","劳动纪律检查考核记录","CADA",259,4,19,"劳动纪律检查考核记录","党员缴纳党费登记表","CADA",260,4,20,"党员缴纳党费登记表","精神文明建设记录","CADA",261,3,21,"精神文明建设记录","班组建设检查考核记录","CADA",262,4,22,"班组建设检查考核记录","职工文明行为检查考核记录","CADA",263,4,23,"职工文明行为检查考核记录","党支部达标年度考核意见","CADA",264,4,24,"党支部达标年度考核意见","");
-->
</script>





然后再根据infonew2,infonew3分别取出需要的数组!!!!
yacus 2003-09-19
  • 打赏
  • 举报
回复
给我1000分,我给你个javascript写的小型关系数据库.可以任意列抽取,排序,分组,汇总.效率很高
^_^
gaobochina 2003-09-19
  • 打赏
  • 举报
回复
我做过这种循环
如果大于500的就不行了!
gaobochina 2003-09-19
  • 打赏
  • 举报
回复
干什么使啊!
sw47 2003-09-19
  • 打赏
  • 举报
回复
for(i=0;i<info.length;i+=6)
{
//info[i+5]相等的取出然后剩下的在循环再取出
}
sw47 2003-09-19
  • 打赏
  • 举报
回复
for(i=0;i<info.length;i+=6)
{
//info[i+5]相等的取出然后剩下的在循环再取出
}
yacus 2003-09-19
  • 打赏
  • 举报
回复
如果数组里面的数字超过1000而且跨度比较大的话就要换其它算法了.1000以内应该这种算法比较快
yacus 2003-09-19
  • 打赏
  • 举报
回复
var arr = [1,0,2,1,3,0,4,1,5,2,6,2,7,2,8,0,9,1]
var newArr = new Array();

for(var i=0;i<arr.length;i+=2){
if(!newArr[arr[i+1]])
newArr[arr[i+1]] = new Array();
newArr[arr[i+1]][i] = true;
}
var str = "";
for(var i=0;i<newArr.length;i++){
if(newArr[i]){
str += "值为'"+i+"'的元素有:\n";
for(var j=0;j<newArr[i].length;j++){
if(newArr[i][j])
str += "\t"+j+"["+i+"]"+"\n";
}

}

}

alert(str)
bubuy 2003-09-19
  • 打赏
  • 举报
回复
楼主,1[0],2[1],3[0],4[1],5[2],6[2],7[2],8[0],9[1]
是数组吗?

87,988

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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