Discuss / JavaScript / 其实有很多种方法可以实现啦,就按照本文主题来实现吧!

其实有很多种方法可以实现啦,就按照本文主题来实现吧!

Topic source
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<ol id="test-list">
    <li class="lang">Scheme</li>
    <li class="lang">JavaScript</li>
    <li class="lang">Python</li>
    <li class="lang">Ruby</li>
    <li class="lang">Haskell</li>
</ol>
<script>
    var list = document.getElementById("test-list");
    var elemArr = list.children;
    var length = elemArr.length;
    for (var i = 0; i < length; i++) {
        if (i == 0) {
            continue;
        }
        for(j = 0 ; j < i ; j++){
            if(elemArr[i].innerText < elemArr[j].innerText){ //从头开始可以减少循环的次数 提高性能 
                list.insertBefore(elemArr[i], elemArr[j]);
                continue;
            }
        }
    }
</script>
</body>
</html>

感谢~!

看了很多评论都是替换 innerText 的,这样通过修改来排序的方法不好,还是你这个安全。

一开始也想到用 insertBefore 和 appendChild 方法来做,就是 tmd 不会。。。

插个眼:

var list = document.getElementById('test-list');

// 冒泡排序
function bubbleSort(list) {
  let len   = list.children.length;
  let child = list.children;
  for (let i = 0; i < len - 1; ++i) {
    for (let j = 0; j < len - i - 1; ++j) {
      if (child[j].innerText > child[j+1].innerText) {
        list.insertBefore(child[j+1], child[j]);
      }
    }
  }
  return list;
}

bubbleSort(list);

  • 1

Reply