练练脑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"]));
练练脑javascript写直接插入排序和冒泡排序的更多相关文章
- 用javascript 写个函数返回一个页面里共使用了多少种HTML 标签
今天我无意间看到一个面试题: 如何用javascript 写个函数返回一个页面里共使用了多少种HTML 标签? 不知你看到 是否蒙B了,如果是我 面试,肯定脑子嗡嗡的响.... 网上搜了搜也没有找到答 ...
- JavaScript写在Html页面的<head></head>中
JavaScript写在Html页面的<head></head>中 ----------------- <html> <head> <style ...
- JavaScript写一个连连看的游戏
天天看到别人玩连连看, 表示没有认真玩过, 不就把两个一样的图片连接在一起么, 我自己写一个都可以呢. 使用Javascript写了一个, 托管到github, 在线DEMO地址查看:打开 最终的效果 ...
- javascript写在<head>和<body>里的区别
Javascript写在哪里?概括起来就是三种形式:1. 内部:Html网页的<body></body>中:2. 内部:Html网页的<head></head ...
- 原生javascript写的侧栏跟随效果
浏览网站时经常看到有的网站上,当一个页面很长的时候,设定侧栏内容会跟随滚动条滚动,我们把这种效果叫做“侧栏跟随滚动”.这种特效对提高网站浏览量.文章点击率.广告点击量都有一定效果. 侧栏跟随滚动的实现 ...
- javascript 写一段代码,判断一个字符串中出现次数最多的字符串,并统计出现的次数
javascript 写一段代码,判断一个字符串中出现次数最多的字符串,并统计出现的次数 function test(){ var bt = document.getElementById(" ...
- 用JavaScript写一个区块链
几乎每个人都听说过像比特币和以太币这样的加密货币,但是只有极少数人懂得隐藏在它们背后的技术.在这篇博客中,我将会用JavaScript来创建一个简单的区块链来演示它们的内部究竟是如何工作的.我将会称之 ...
- 怎么分别javascript写在<head>里还是<body>里面?
怎么分别javascript写在<head>里还是<body>里面? 具体哪些语句写在<body>里,哪些语句写在<head>里 满意答案 BeginN ...
- 用javascript写原生ajax(笔记)
AJAX 的全名叫做 Asynchronous JavaScript and XML(异步的 JavaScript 和 XML).它最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并 ...
随机推荐
- jquery生成元素注册事件无效,及事件委托的使用
在页面加载完成之后,我们在页面操作用js生成html代码到页面,动态的添加元素带页面上 但是,这里可能很多人就必须碰到的一个问题就出现了,当你之后动态添加了元素到页面上,发现这个元素的绑定事件无效,如 ...
- GDB调试D语言
GDB7.2后开始支持对D语言的调试 GUI前端 http://beej.us/guide/bggdb/#compiling GDB教程 http://blog.csdn.net/haoel/arti ...
- <td valign="center" align="left">
单元格对齐方式:垂直居中,水平居左.
- Schema
Schema约束 1.namespace 相当于schema文件的id 2.targetNamespace属性 用来指定schema文件的namespace的值 3.xmlns属性 引入一个约束,它的 ...
- Ubuntu下su被拒绝
ubuntu@ubuntu:~$ sudo passwd root输入新的 UNIX 密码: 重新输入新的 UNIX 密码: passwd:已成功更新密码前提是你肯定得知道当前用户的密码. 然后登录: ...
- 大熊君学习html5系列之------WebStorage(客户端轻量级存储方案)
一,开篇分析 Hi,大家好!大熊君又和大家见面了,(*^__^*) 嘻嘻……,这系列文章主要是学习Html5相关的知识点,以学习API知识点为入口,由浅入深的引入实例, 让大家一步一步的体会" ...
- CSS gradient渐变之webkit核心浏览器下的使用
一.关于渐变 渐变是一种应用于平面的视觉效果,可以从一种颜色逐渐地转变成另外一种颜色,故可以创建类似于彩虹的效果渐变可以应用在任何可以使用图片的地方.例如,您可以指定一个这么一个渐变:顶部的颜色是红色 ...
- jQuery如何退出each循环的?
试问:jQuery是如何退出each循环的? 在回调函数里return false即可,大多数jQuery的方法都是如此的. 返回 'false' , 将停止循环 (就像在普通的循环中使用 'bre ...
- PHP获取当前页面的URL
/** * 获取当前页面完整URL地址 * * @author 52php.cnblogs.com */ function http_get_page_url() { global $_G; if ( ...
- [BZOJ2761][JLOI2011]不重复数字
[BZOJ2761][JLOI2011]不重复数字 试题描述 给出N个数,要求把其中重复的去掉,只保留第一次出现的数. 例如,给出的数为1 2 18 3 3 19 2 3 6 5 4,其中2和3有重复 ...