javascript的冒泡排序, 快速排序, 选择排序, 插入排序

  冒泡排序, 最经典的排序, 把比较大的数字往后放, 和选择排序恰恰相反:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script>
        function sort(elements){
            for(var i=0;i<elements.length-1;i++){
                for(var j=0;j<elements.length-1;j++){
                    if(elements[j]>elements[j+1]){
                        var swap=elements[j];
                        elements[j]=elements[j+1];
                        elements[j+1]=swap;
                    }
                }
            }
        }

        var elements = [3, 1, 5, 7, 2, 4, 9, 6, 10, 8];
        console.log('before: ' + elements);
        sort(elements);
        console.log(' after: ' + elements);
    </script>
</body>
</html>

   javascript实现的快速排序, 选取数组的第一个为中间值, 然后把小于中间值的元素排到数组的左边, 把大于中间值的元素排到数据右边, 充分利用二分法, 排序效率非常高:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>quick sort</title>
</head>
<body>
    <script>
        var arr = [5,2,9,8,4,10,8];
        function quick(arr) {
            if(arr.length<=1) {
                return arr;
            }
            //指定第一个元素为中间元素
            var val = arr[0];
            arr.splice(0,1);
            var left = [], right = [];
            for(var i=0, len = arr.length ; i<len; i++) {
                if(arr[i]<val) {
                    left.push(arr[i]);
                }else if(arr[i]>val) {
                    right.push(arr[i]);
                }else{
                    left.push(arr[i]);
                }
            }
            return [].concat(quick(left),val,quick(right));
        }
        console.log(quick(arr));
    </script>
</body>
</html>

   JS实现插入排序:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>insert</title>
</head>
<body>
    <script>
        var arr = [5,2,9,8,4,10,1,3];
        function sort(arr) {
            //假设第一个为有序的, 除了第一个以外全部是无序的;
            for(var i=1; i<arr.length; i++) {
                if(arr[i] < arr[i-1]) {
                    var val = arr[i];
                    arr[i] = arr[i-1];
                    var j = i-1;
                    while(val<arr[j]&&j>=0) {
                        arr[j+1] = arr[j];
                        j--;
                    }
                    arr[j+1] = val;
                }
            }
            return arr;
        };
        console.log( sort(arr) );
    </script>
</body>
</html>

   javascript中的选择排序, 寻找数组中的最小元素 , 让他与数组中的第一个元素互换, 然后在剩余的数组中找到最小的元素, 让他与第二个元素互换, 依次类推, 就是选择排序的逻辑:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>select sort</title>
</head>
<body>
    <script>
        var arr = [5,2,9,8,4,10,1,3,3];
        function sort(arr) {
            for(var i=0; i<arr.length-1; i++) {
                for(var j=i; j<arr.length; j++) {
                    if(arr[j]<arr[i]) {
                        var val = arr[i];
                        arr[i] = arr[j];
                        arr[j] = val;
                    }
                }
            }
            return arr;
        };
        console.log( sort(arr) );
    </script>
</body>
</html> 

  EOF————

作者: NONO
出处:http://www.cnblogs.com/diligenceday/
QQ:287101329
微信:18101055830 

posted @ 2017-03-24 16:32  方方和圆圆  阅读(404)  评论(0编辑  收藏  举报

再过一百年, 我会在哪里?