用JS实现的常见几种排序算法

1.快速排序法

  1. /*快速排序法*/
  2.         function quickSort(a) {
  3.                 if (a.length <= 1) {
  4.                         return a;
  5.                 }
  6.                 var midLength = Math.floor(a.length / 2);
  7.                 var midValue = a.splice(midLength,1);
  8.                 var left = [];
  9.                 var right = [];
  10.                 for (var i = 0; i < a.length; i++) {
  11.                         if (a[i] < midValue) {
  12.                                 left.push(a[i]);
  13.                         } else {
  14.                                 right.push(a[i]);
  15.                         }
  16.                 }
  17.                 return quickSort(left).concat(midValue,quickSort(right));
  18.         }
  19.         console.log(quickSort([1,5,3,6,2,4,0]));


2.冒泡排序

  1. /*冒泡排序法*/
  2.         function bubbleSort(a) {
  3.                 var length = a.length;
  4.                 var sortArray;
  5.                 for (var i = 0; i < length-1; i++) {
  6.                         for (var j = 0; j < length-i-1 ; j++) {
  7.                                 if (a[j] > a[j+1]) {
  8.                                         sortArray = a[j];
  9.                                         a[j] = a[j+1];
  10.                                         a[j+1] = sortArray;
  11.                                 }
  12.                         }
  13.                 }
  14.                 return a;
  15.         }
  16.         console.log(bubbleSort([2,1,3,6,5,4,7,0]));

3.插入排序

  1. /*插入排序法*/
  2.         function insertSort(a) {
  3.                 var length = a.length;
  4.                 var sortArray;
  5.                 for (var i = 1; i < length; i++) {
  6.                         for (var j = 0; j < i ; j++) {
  7.                                 if (a[i] < a[j]) {
  8.                                         sortArray = a[i];
  9.                                         a[i] = a[j];
  10.                                         a[j] = sortArray;
  11.                                 }
  12.                         }
  13.                 }
  14.                 return a;
  15.         }
  16.         console.log(insertSort([0,6,5,3,4,2,1,7]));

4.选择排序

  1. /*选择排序法*/
  2.         function selectSort(a) {
  3.                 for (var i = 0; i < a.length; i++) {
  4.                         var min = a[i];
  5.                         var k = i;
  6.                         for (var j = i + 1; j < a.length; j++) {
  7.                                 if (min > a[j]) {
  8.                                         min = a[j];
  9.                                         k = j;
  10.                                 }
  11.                         }
  12.                         a[k] = a[i];
  13.                         a[i] = min;
  14.                 }
  15.                 return a;
  16.         }
  17.         console.log(selectSort([5,1,4,0,3,2,7,6]));
附加:js判断滚动条是否到底部

<style>
*{
padding:0;
margin:0;
}
.test{
position: fixed;
left: 0;
top: 0;
right: 0;
bottom: 0;
width: 600px;
height: 300px;
padding: 20px;
margin: auto;
overflow-y: auto;
border:2px solid #DDD;
}
</style>
<div class="test" id="test">
<p style="height:400%"></p>
</div>
<script>
var test = document.getElementById("test");
test.addEventListener("scroll", function(){
var str = "可滚动距离:"+ test.scrollHeight +" 滚动位置:"+ test.scrollTop + " 滚动容器高度:"+ test.clientHeight;
var p = document.createElement("p");
p.innerHTML = str;
document.body.appendChild(p);
}, false);
</script>

posted @ 2015-07-16 10:43  仗剑天涯只为卿  阅读(210)  评论(0编辑  收藏  举报