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

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"]));
时间: 2024-10-08 19:34:50

练练脑javascript写直接插入排序和冒泡排序的相关文章

C语言实现直接插入排序,冒泡排序以及二分查找(巩固理解记忆)

C语言实现直接插入排序,冒泡排序以及二分查找(巩固理解记忆) 虽然直接插入排序,冒泡排序以及二分查找是算法中最为基础以及老掉牙的话题,但作为一名算法的深爱者,有时候无聊时候总会将这些简单的话题重新理解并敲写一番,目的只是为了得到理解娴熟的程度.而且,我觉得越是简单基础的东西,有时候更应该反复的去敲写,深化它,并最终让其中的思想内化为自己的一部分.待到他日一提起之时,会相当娴熟的"刷刷刷..."几分钟搞定,那就很有成就感了! 因为我喜欢对于一个问题进行实例的剖析,进而再转化为特有的用某种

常见排序算法实现(直接插入排序,冒泡排序,快速排序,建大选择排序)

常见的排序算法实现(直接插入排序,冒泡排序,快速排序,建大选择排序),还有几个下次写上. #include "stdio.h" #include "stdlib.h" #include "malloc.h" #include <iostream> using namespace std; #define N 10 void showArr(int a[]); void InsertSort(int a[]);    //直接插入排序

60行代码:Javascript 写的俄罗斯方块游戏

先看效果图: 游戏结束图: javascript实现源码: <!doctype html> <html><head><title>俄罗斯方块</title> <meta name="Description" content="俄罗斯方块Javascript实现"> <meta name="Keywords" content="俄罗斯方块,Javascript,

JavaScript写一个连连看的游戏

天天看到别人玩连连看, 表示没有认真玩过, 不就把两个一样的图片连接在一起么, 我自己写一个都可以呢. 使用Javascript写了一个, 托管到github, 在线DEMO地址查看:打开 最终的效果图: 写连连看之前要先考虑哪些呢? 1:如何判断两个元素可以连接呢, 刚刚开始的时候我也纳闷, 可以参考这里:打开: 2:模板引擎怎么选择呢, 我用了底线库的template,因为语法简单. 本来想用Handlebars,但是这个有点大啊, 而且底线库也提供很多常用工具方法( •? ω •? )y:

选择排序、插入排序、冒泡排序python实现

选择排序的时间复杂度为O(n^2),是不稳定的排序 冒泡排序的时间复杂度最好情况下为O(n),最坏情况下为O(n^2),平均情况下为O(n^2),是稳定的排序 插入排序的时间复杂度最好情况下为O(n),最坏情况下为O(n^2),,平均情况下为O(n^2),是稳定的排序 1.选择排序 def selection(lista): leng=len(lista); for i in range(0,leng): index=i; min=lista[i]; for j in range(i,leng)

用javascript写计算器

本人新手,如果有什么不足的地方,希望可以得到指点 今天尝试用javascript写一个计算器 首先把计算器的按钮做出来,用button做好了,这样可以不用设置太多的样式 <button value="7" >7</button> 按照上面把0-9数字的按钮都搞出来 当然还有+-*/=%这些按钮 顺便给每个按钮添加样式 如下: <style> .short{height:63px;width:55px;float:left;} </style&g

插入排序、冒泡排序、选择排序、希尔排序、快速排序、归并排序、堆排序和LST基数排序——C++实现

首先是算法实现文件Sort.h,代码如下: /* * 实现了八个常用的排序算法:插入排序.冒泡排序.选择排序.希尔排序 * 以及快速排序.归并排序.堆排序和LST基数排序 * @author gkh178 */ #include <iostream> template<class T> void swap_value(T &a, T &b) { T temp = a; a = b; b = temp; } //插入排序:时间复杂度o(n^2) template<

280行代码:Javascript 写的2048游戏

2048 原作者就是用Js写的,一直想尝试,但久久未动手. 昨天教学生学习JS代码.不妨就做个有趣的游戏好了.2048这么火,是一个不错的选择. 思路: 1. 数组 ,2维数组4x4 2. 移动算法,移动后有数字的对齐,无数字(我用的0,但不显示)补齐. 移动前 移动后(注意程序合并了第一行2个2,并产生了新的2) 移动算法分2步: 第一步骤:移动 第二步骤:合并 移动代码参考: [html] view plaincopy function left(t,i) { var j; var len 

javascript写的新闻滚动代码

在企业站中,我们会看到很多新闻列表很平滑的滚动,但是这种功能自己写太浪费时间,下面是我整理好的一组很常用的新闻列表滚动,有上下分页哦! 1.body里面 1 <div class="tz_tagcgnewcontent"> 2 <div id="feature-slide-block"> 3 <div class="tz_newlist"> 4 <div class="tz_newimg&quo