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写直接插入排序和冒泡排序的更多相关文章

  1. 用javascript 写个函数返回一个页面里共使用了多少种HTML 标签

    今天我无意间看到一个面试题: 如何用javascript 写个函数返回一个页面里共使用了多少种HTML 标签? 不知你看到 是否蒙B了,如果是我 面试,肯定脑子嗡嗡的响.... 网上搜了搜也没有找到答 ...

  2. JavaScript写在Html页面的<head></head>中

    JavaScript写在Html页面的<head></head>中 ----------------- <html> <head> <style ...

  3. JavaScript写一个连连看的游戏

    天天看到别人玩连连看, 表示没有认真玩过, 不就把两个一样的图片连接在一起么, 我自己写一个都可以呢. 使用Javascript写了一个, 托管到github, 在线DEMO地址查看:打开 最终的效果 ...

  4. javascript写在<head>和<body>里的区别

    Javascript写在哪里?概括起来就是三种形式:1. 内部:Html网页的<body></body>中:2. 内部:Html网页的<head></head ...

  5. 原生javascript写的侧栏跟随效果

    浏览网站时经常看到有的网站上,当一个页面很长的时候,设定侧栏内容会跟随滚动条滚动,我们把这种效果叫做“侧栏跟随滚动”.这种特效对提高网站浏览量.文章点击率.广告点击量都有一定效果. 侧栏跟随滚动的实现 ...

  6. javascript 写一段代码,判断一个字符串中出现次数最多的字符串,并统计出现的次数

    javascript 写一段代码,判断一个字符串中出现次数最多的字符串,并统计出现的次数 function test(){ var bt = document.getElementById(" ...

  7. 用JavaScript写一个区块链

    几乎每个人都听说过像比特币和以太币这样的加密货币,但是只有极少数人懂得隐藏在它们背后的技术.在这篇博客中,我将会用JavaScript来创建一个简单的区块链来演示它们的内部究竟是如何工作的.我将会称之 ...

  8. 怎么分别javascript写在<head>里还是<body>里面?

    怎么分别javascript写在<head>里还是<body>里面? 具体哪些语句写在<body>里,哪些语句写在<head>里 满意答案 BeginN ...

  9. 用javascript写原生ajax(笔记)

    AJAX  的全名叫做  Asynchronous JavaScript and XML(异步的 JavaScript 和 XML).它最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并 ...

随机推荐

  1. UICollectionView

    #import "ViewController.h" @interfaceViewController ()<UICollectionViewDataSource,UICol ...

  2. asp.net core 使用EF7 Code First 创建数据库,同时使用命令创建数据库

    1.首先下载vs2015的Asp.Net Core(RC2)的插件工具(https://www.microsoft.com/net/core#windows)2.创建一个asp.net Core的项目 ...

  3. Pandas-数据选取

    Pandas包对数据的常用数据切片功能 目录 [] where 布尔查找 isin query loc iloc ix map与lambda contains DataFrame的索引选取 [] 只能 ...

  4. [linux]Socket编程的头文件

    socket编程中需要用到的头文件 sys/types.h:数据类型定义 sys/socket.h:提供socket函数及数据结构 netinet/in.h:定义数据结构sockaddr_in arp ...

  5. ThinkPHP之OAuth2.0环境搭建

    几个比较好的超链接 1.http://www.tuicool.com/articles/u6beUju 2.http://leyteris.iteye.com/blog/1483403

  6. [解决WebClient或HttpWebRequest首次连接缓慢问题]

    [编程环境]Visual Studio 2010, NET4.0 [开发语言]C#, 理论上VB.NET等依赖.NET Framework框架的语言均受此影响 [问题描述] 使用HttpWebRequ ...

  7. BZOJ4590——[Shoi2015]自动刷题机

    1.题意:题意很简洁吧,就不概括了 2.分析:我思考了半天,我猜答案满足单调...没敢写,看了题解去问Claris为啥单调,Claris一句话" 因为n越大明显不可能做更多题 ", ...

  8. php生成随机字符串

    <?php echo make_random_str(); function make_random_str() { $arr = ["A","B",&q ...

  9. PHP获取一年有几周以及每周开始日期和结束日期

    最近接了一个项目,其中有一需求是用php获取一年有几周以及每周开始日期和接触日期.在网上找些资料没有合适的,于是自己做了一份,下面通过两种方式实现PHP获取一年有几周以及每周开始日期和结束日期 代码一 ...

  10. FreeRTOS学习及移植笔记之一:开始FreeRTOS之旅

    1.必要的准备工作 工欲善其事,必先利其器,在开始学习和移植之前,相应的准备工作必不可少.所以在开始我们写要准备如下: 测试环境:我准备在STM32F103平台上移植和测试FreeRTOS系统 准备F ...