js数组,元素交换(请看清需求)

iori_wen 2008-12-15 04:58:47
有整数数组,要求从小到大排序,但是一定,一定要用交换元素,并且必须以最小的数来交换开始。因为每步交换需要执行基本函数baseFunction(number1,number2)
function baseFunction(number1,number2){
alert(number1.toString() + "|" + number1.toString())
}
如:数组:22、6、56、34、87、8、45,
第一步就是交换6和22,变成6、22、56、34、87、8、45,执行baseFunction(6,22);
第二步就应该交换8和22,变成6、8、56、34、87、22、45,执行baseFunction(8,22);
第三步就应该交换22和56,变成6、8、22、34、87、56、45,执行baseFunction(22,56);
如果碰到最小数的就在应该出现的位置上就无须交换,
最后数组变成:6、8、22、34、45、56、87

急求,在线等,谢谢高手帮忙


我贴出未完成的代码:
<!doctype html public "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script language="javascript" type="text/javascript">
function resetTable(tbobj,str){
numberarr = str.split(",");
var temp = 0;
for(var i = 0; i < numberarr.length; i++){
for(var j = i + 1; j < numberarr.length; j++){
if(numberarr[j] < numberarr[i]){
changeLie(tbobj,numberarr[j], numberarr[i]);
temp = numberarr[i];
numberarr[i] = numberarr[j];
numberarr[j] = temp;
}
}
}
}

//错就错在resetTable()用了冒泡排序(我不需要相邻替换!!!!),应该写一个方法满足我的需求,有大大能帮忙吗
function changeLie(tbobj,number1,number2){
var temp =new Array();
var arr=new Array();
myTR=tbobj.rows;
for(i=0;i<myTR.length;i++){
arr[i]=new Array();
temp[i]=new Array();
myTD=myTR[i].cells;
for(j=0;j<myTD.length;j++){
temp[i][j] = myTR[i].cells[number2].innerHTML;
myTR[i].cells[number2].innerHTML = myTR[i].cells[number1].innerHTML;
myTR[i].cells[number1].innerHTML = temp[i][j];
}
}
}
</script>
</head>
<body>
<table border="1px" id="tblTest">
<TR>
<TD>5</TD>
<TD>8</TD>
<TD>7</TD>
<TD>2</TD>
<TD>3</TD>
<TD>6</TD>
<TD>1</TD>
<TD>4</TD>
<TD>0</TD>
</TR>
<TR>
<TD>张三</TD>
<TD>天天小学</TD>
<TD>二(1)班</TD>
<TD>9</TD>
<TD>男</TD>
<TD>上海</TD>
<TD>喜欢笑</TD>
<TD>35KG</TD>
<TD>团员</TD>
</TR>
<TR>
<TD>李四</TD>
<TD>天兆中学</TD>
<TD>初一(2)班</TD>
<TD>14</TD>
<TD>女</TD>
<TD>上海</TD>
<TD>喜欢哭</TD>
<TD>50KG</TD>
<TD>党员</TD>
</TR>
</table>
<input type="button" value="change" onclick="resetTable(document.getElementById('tbltest'),'5,8,7,2,3,6,1,4,0');">
</body>
</html>
...全文
329 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
majianan 2008-12-15
  • 打赏
  • 举报
回复
<!doctype html public "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script language="javascript" type="text/javascript">
function resetTable(tbobj){
var td = tbobj.rows[0].cells;
var arr = new Array();
for(var i=0;i<td.length;i++){
arr.push(td[i].innerHTML);
}
for(var i=0;i<arr.length;i++){
var iMin = arr[i];
var index = i;
for(var j=i;j <arr.length;j++){

if(iMin>arr[j]){
iMin = arr[j];
index = j;
}
}
arr.splice(index,1,arr[i]);
arr.splice(i,1,iMin);

changeLie(tbobj,i,index);
}
}
//错就错在resetTable()用了冒泡排序(我不需要相邻替换!!!!),应该写一个方法满足我的需求,有大大能帮忙吗
function changeLie(tbobj,number1,number2){
alert("number1="+number1+"= number2="+number2);
var temp =new Array();
var arr=new Array();
myTR=tbobj.rows;
for(i=0;i <myTR.length;i++){
var temp = myTR[i].cells[number2].innerHTML;
myTR[i].cells[number2].innerHTML = myTR[i].cells[number1].innerHTML;
myTR[i].cells[number1].innerHTML = temp;
}
}
</script>
</head>
<body>
<table border="1px" id="tblTest">
<TR>
<TD>5 </TD>
<TD>8 </TD>
<TD>7 </TD>
<TD>2 </TD>
<TD>3 </TD>
<TD>6 </TD>
<TD>1 </TD>
<TD>4 </TD>
<TD>0 </TD>
</TR>
<TR>
<TD>张三 </TD>
<TD>天天小学 </TD>
<TD>二(1)班 </TD>
<TD>9 </TD>
<TD>男 </TD>
<TD>上海 </TD>
<TD>喜欢笑 </TD>
<TD>35KG </TD>
<TD>团员 </TD>
</TR>
<TR>
<TD>李四 </TD>
<TD>天兆中学 </TD>
<TD>初一(2)班 </TD>
<TD>14 </TD>
<TD>女 </TD>
<TD>上海 </TD>
<TD>喜欢哭 </TD>
<TD>50KG </TD>
<TD>党员 </TD>
</TR>
</table>
<input type="button" value="change" onclick="resetTable(document.getElementById('tbltest'));">
</body>
</html>
muxrwc 2008-12-15
  • 打赏
  • 举报
回复
呃.还不是冒泡...
那个是交换0-n-1次,这个是交换1次...
不过差不多来着...:D
muxrwc 2008-12-15
  • 打赏
  • 举报
回复
这不冒泡么- -
majianan 2008-12-15
  • 打赏
  • 举报
回复
没去修改你的代码,就是实现了你说的交换功能。通过下面的alert(),可以显示每次变化,应该就是你说的吧


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>

<BODY>
<script>
var arr = [22,6,56,34,87,8,45];


for(var i=0;i<arr.length;i++){
var iMin = arr[i];
var index = i;
for(var j=i;j<arr.length;j++){
if(iMin>arr[j]){
iMin = arr[j];
index = j;
}
}
arr.splice(index+1,0,arr[i]);
arr.splice(index,1);
arr.splice(i,1,iMin);
alert(arr.toString());
}

</script>
</BODY>
</HTML>

majianan 2008-12-15
  • 打赏
  • 举报
回复
var arr = [22,6,56,34,87,8,45];


for(var i=0;i<arr.length;i++){
var iMin = arr[i];
var index = i;
for(var j=i;j<arr.length;j++){
if(iMin>arr[j]){
iMin = arr[j];
index = j;
}
}
arr.splice(index+1,0,arr[i]);
arr.splice(index,1);
arr.splice(i,1,iMin);

alert(arr.toString());
}
tantaiyizu 2008-12-15
  • 打赏
  • 举报
回复
up....

87,916

社区成员

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

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