function swap(arr,index1,index2){
var t = arr[index1];
arr[index1] = arr[index2];
arr[index2] = t;
}
function Sarray(num){
this.nums = [];
this.num = num;
}
Sarray.prototype.init = function() {
for (i=0;i<this.num;i++){
this.nums.push(Math.floor(Math.random()*(this.num+1)));
}
};
Sarray.prototype.bubbleSort = function(){
for (var i=this.nums.length;i>1;i--){
for (var j=0;j<i;j++){
if(this.nums[j]>this.nums[j+1]){
swap(this.nums,j,j+1);
}
}
}
}
Sarray.prototype.selectionSort = function(){
for (var i=0;i<this.nums.length-1;i++){
var min = i;
for (var j=i+1;j<this.nums.length;j++){
if(this.nums[min]>this.nums[j]){
min = j;
}
}
if(min!=i){
swap(this.nums,i,min);
}
}
}
Sarray.prototype.insertSort = function(){//默认0号位置有序
for (var i=1;i<this.nums.length;i++){
var tem = this.nums[i];
var j = i;
while(this.nums[j-1]>tem&&j>0){
this.nums[j] = this.nums[j-1];
j--;
}
this.nums[j] = tem;
}
}
var n=10000;
var a = new Sarray(n);
var b = new Sarray(n);
var c = new Sarray(n);
a.init();
b.init();
c.init();
var start = new Date().getTime();
a.bubbleSort();
var end = new Date().getTime();
console.log("冒泡排序用时:"+(end-start)+"ms");
start = new Date().getTime();
b.selectionSort();
end = new Date().getTime();
console.log("选择排序用时:"+(end-start)+"ms");
start = new Date().getTime();
c.insertSort();
end = new Date().getTime();
console.log("插入排序用时:"+(end-start)+"ms");

参考书籍:《数据结构与算法javascript描述》,我看的是pdf版。书上代码有错,已经进行修改。以上代码介绍了冒泡排序,选择排序,和插入排序,并通过对随机数的排序实验展现出他们的排序效率,可以直接拖到自己的控制台中测试。

说明:Sarray实例化时出入的参数代表的是要生成随机数的数量,init方法是生成随机数。bubbleSort是冒泡排序,selectionSort是选择排序,insertSort是插入排序,下次会再学习高级排序算法

js的几种简单排序算法及其效率实测的更多相关文章

  1. 三种简单排序算法(java实现)

    一.冒泡排序 算法思想:遍历待排序的数组,每次遍历比较相邻的两个元素,如果他们的排列顺序错误就交换他们的位置,经过一趟排序后,最大的元素会浮置数组的末端.重复操                   作 ...

  2. JS三种简单排序算法

    冒泡排序:最简单.最慢.长度小于7的时候最优 插入排序:比冒泡要快比快速排序和希尔排序慢,数据量小的时候优势大 快速排序:速度很快  //js利用systemSort进行排序 systemSort: ...

  3. c语言实现基本的数据结构(二) 链表(包括链表的三种简单排序算法)

    #include "stdafx.h" #include <stdlib.h> //创建一个节点,data为value,指向NULL Node* Create(int ...

  4. JavaScript版几种常见排序算法

    今天发现一篇文章讲“JavaScript版几种常见排序算法”,看着不错,推荐一下原文:http://www.w3cfuns.com/blog-5456021-5404137.html 算法描述: * ...

  5. 简单排序算法设计(Java)

    总共有八种排序算法,还是慢慢看吧 1.简单排序算法 简单排序算法就是设置标兵,逐个比较数,然后查找插入位置,插入 public static void p(int[] a){ for(int i=0; ...

  6. PHP四种基本排序算法

    PHP的四种基本排序算法为:冒泡排序.插入排序.选择排序和快速排序. 下面是我整理出来的算法代码: 1. 冒泡排序: 思路:对数组进行多轮冒泡,每一轮对数组中的元素两两比较,调整位置,冒出一个最大的数 ...

  7. 七种经典排序算法及Java实现

    排序算法稳定性表示两个值相同的元素在排序前后是否有位置变化.如果前后位置变化,则排序算法是不稳定的,否则是稳定的.稳定性的定义符合常理,两个值相同的元素无需再次交换位置,交换位置是做了一次无用功. 下 ...

  8. 简单排序算法 C++类实现

    简单排序算法: 冒泡排序 插入排序 选择排序 .h代码: // // SortClass.h // sort and selection // // Created by wasdns on 16/1 ...

  9. php四种基础排序算法的运行时间比较

    /** * php四种基础排序算法的运行时间比较 * @authors Jesse (jesse152@163.com) * @date 2016-08-11 07:12:14 */ //冒泡排序法 ...

随机推荐

  1. 一口一口吃掉Volley(一)

    欢迎访问我的个人博客转发请注明出处:http://www.wensibo.top/2017/02/16/一口一口吃掉Volley(一)/ 本次编写的Volley教程现在看来其实已经跟不上时代了,但是技 ...

  2. ABP学习笔记

      1. 用 Nhibernate:CountAsync 是定义在System.Data.Entity里的 var totalCount = await query.CountAsync(); 出现以 ...

  3. angular : $eval & $timeout

    $digest: function() { var watch, value, last, watchers, length, dirty, ttl = TTL, next, current, tar ...

  4. php实现留言板功能

    这个小小的留言板功能适合班级内或者公司内部之间的讨论,对话和留言,非常的方便,更重要的是无需网络,对于公司管理层来说是非常乐于常见的, 下面是这个留言板的写法: 1 首先是登录页面: <form ...

  5. 前端基本知识(四):JS的异步模式:1、回调函数;2、事件监听;3、观察者模式;4、promise对象

    JavaScript语言将任务的执行模式可以分成两种:同步(Synchronous)和异步(Asychronous). “同步模式”就是一个任务完成之后,后边跟着一个任务接着执行:程序的执行顺序和排列 ...

  6. J2ee技术难点

    J2ee技术难点 session/cookie区别联系 jsp/servlet区别联系 filter执行流程 openSessionInView原理 clone与servilizable区别联系 eq ...

  7. 3361: [Usaco2004 Jan]培根距离

    3361: [Usaco2004 Jan]培根距离 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 16  Solved: 13[Submit][Sta ...

  8. 使用D3 Geo模块画澳大利亚地图

    数据 数据可视化主要旨在借助于图形化手段,清晰有效地传达与沟通信息.因此做数据可视化前需要想明白2件事: 你有什么数据? 你要传达什么信息? 本文中的示例中,将以不同的颜色显示澳大利亚不同地区的客户数 ...

  9. SEO-长尾词与分词技术

        长尾关键词与分词技术 长尾关键词:网站非目标关键词,能给网站带来流量的关键词. 例如:主关键词是成都网站建设 那么,跟成都网站建设相关的词,就叫做长尾关键词. 比如:成都网站建设哪里好?成都网 ...

  10. Spring Boot启动过程(五):Springboot内嵌Tomcat对象的start

    标题和上一篇很像,所以特别强调一下,这个是Tomcat对象的. 从TomcatEmbeddedServletContainer的this.tomcat.start()开始,主要是利用Lifecycle ...