Discuss / JavaScript / 作业

作业

Topic source

BruceWang_NEU

#1 Created at ... [Delete] [Delete and Lock User]

var list = document.getElementById('test-list'),li = list.children; for(var i = 0; i<li.length; i++ ){ for(var j = 0; j<li.length-i-1; j++){

if(li[j].innerText >= li[j+1].innerText){
  list.insertBefore(li[j+1],li[j]);
}

} }

安瑟泥

#2 Created at ... [Delete] [Delete and Lock User]

感觉这种排序方式符合题意。 那种把内容(innerText)提取出来排序,然后重新设置回去的方法有些取巧,幸好都是li标签,万一child节点不同呢?

槲寄君

#3 Created at ... [Delete] [Delete and Lock User]

按这个逻辑的话直接一层循环不就行了吗

var list = document.getElementById('test-list'),li = list.children;
for(var j = 0; j<li.length-1; j++){
    if(li[j].innerText >= li[j+1].innerText){
          list.insertBefore(li[j+1],li[j]);
    }
}

厉害,学习了,不过字符串比较大小不是会用字符编码进行比较吗,如果有一个开头是小写是不是就不正确了

吸猫二哈

#5 Created at ... [Delete] [Delete and Lock User]

这DOM操作次数想想就恐怖

咸淡随意

#6 Created at ... [Delete] [Delete and Lock User]

var i, j, c, list = document.getElementById('test-list'); li = list.children; for (i = 0; i < li.length - 1; i++) { for (j = i; j < li.length; j++) { if (li[i].innerText > li[j].innerText) { list.insertBefore(li[j], li[i]); } } }

码农C

#7 Created at ... [Delete] [Delete and Lock User]

厉害!

不二uare

#8 Created at ... [Delete] [Delete and Lock User]

只用一层实现不了

假设有个数组[3,7,2,8,5],数组第0项:3和数组第1项:7,比较后得到数组[3,7,2,8,5],数组的第1项:7和数组第2项:2,比较后得到数组[3,2,7,8,5],(看到这里应该就感觉出有问题了吧)

最后比较完得到数组[3,2,7,8,5],如果以这个结果输出就不对了,应该是让外层第0项跟所有项比较,内层再一项一项比较。语言描述能力差,试着理解一下吧!看下网上sort方法原理可以帮助理解!

萧笑_60112

#9 Created at ... [Delete] [Delete and Lock User]

#3, 这个是冒泡排序,一层循环只能将最大的移到末尾,其他元素位置并不一定能完成排序。


  • 1

Reply