码迷,mamicode.com
首页 > 编程语言 > 详细

练练脑javascript写直接插入排序和冒泡排序

时间:2015-02-17 15:16:52      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:

function insertionSort(array) {
        if (Object.prototype.toString.call(array).slice(8, -1) === ‘Array‘) {//等价于 (array instanceof Array) 判断是否为数组
            var len = array.length;
            if (len <= 1) {//数组只有0个或者一个元素时,不用排序
                return array;
            }
            for (var i = 1; i < len; i++)
            {
                var insertionElement = array[i];//取出一个新元素用作插入子数组
                for (var j = 0; j < i ; j++) {//由0到i-1的子数组
                    if (array[j] < insertionElement)//元素大于,不移动
                        continue;
                    else if (array[j] == insertionElement) {//元素等于,不交换
                        for (var move = i; move > j; move--) {//子数组向后移动1位(如果有链表就可以直接链上,js没有链表)
                            array[move] = array[move - 1];//注意:数组移动要注意顺序
                        }
                        break;
                    }
                    else {//元素小于时交换
                        for (var move = i; move > j; move--) {//子数组向后移动1位
                            array[move] = array[move - 1];
                        }
                        array[j] = insertionElement;
                        break;
                    }
                }
            }
            return array;
        }
        else {//不是数组
            return ‘Not an Array!‘;
        }
    }

    function bubbleSort(array) {
        if (Object.prototype.toString.call(array).slice(8, -1) === ‘Array‘) {//等价于 (array instanceof Array) 判断是否为数组
            var len = array.length;
            if (len <= 1) {//数组只有0个或者一个元素时,不用排序
                return array;
            }
            for (var i = 0; i < len - 1; i++) {
                for (var j = i + 1; j < len; j++) {
                    if (array[j] < array[i]) {//最小的值上浮
                        var temp = array[i];
                        array[i] = array[j];
                        array[j] = temp;
                    }
                }
            }

            return array;
        }
        else {//不是数组
            return ‘Not an Array!‘;
        }
    }


    console.log(insertionSort(["a", "cd", "ee", "hello", "this", "hey", "e", "go", "what", "yo", "foo"]));
    console.log(bubbleSort(["a", "cd", "ee", "hello", "this", "hey", "e", "go", "what", "yo", "foo"]));

练练脑javascript写直接插入排序和冒泡排序

标签:

原文地址:http://www.cnblogs.com/fastmover/p/4295209.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!