基本排序算法(冒泡、选择、插入)的效率比较

来源:互联网 发布:sql server 进程死锁 编辑:程序博客网 时间:2024/05/18 10:05

一、比较思想

  • 冒泡、选择、插入三种排序算法的复杂度非常相似,执行效率也差不多
  • 要确定三种算法的性能差异,采用非正式的计时系统来比较对数据集合进行排序所花费的时间
  • 计时系统基于JavaScript中的Date对象的getTime()函数取得系统时间。
var start = new Date().getTime();

getTime()函数获取的是系统时间,以毫秒为单位。

  • 计时系统
var start = new Date().getTime();...var stop = new Date().getTime();var elapsed = stop - start;  //执行时间

二、代码实现

  • 准备一个包含n个随机整数的数组。即封装一个函数,为每个算法创建一个新的数据集合。
function setData(length){    var arr = new Array(length);    for(var i = 0; i < length; i++) {        arr[i] = length * Math.random();    }    return arr;}
  • 调用之前写好的三种排序算法
<script src="bubbleSort.js" charset="utf-8"></script> //冒泡<script src="insertSort.js" charset="utf-8"></script>  //插入<script src="selectionSort.js" charset="utf-8"></script>  //选择
  • 比较函数的封装
function timeElapsed(length) {    var arr = setData(length);    var start = new Date().getTime();    bubbleSort(arr);    var stop = new Date().getTime();    var elapsed = stop - start;    document.write("对" + length + "个元素执行冒泡排序消耗时间为:" + elapsed + "毫秒<br />");    arr = setData(length);    start = new Date().getTime();    selectionSort(arr);    stop = new Date().getTime();    elapsed = stop - start;    document.write("对" + length + "个元素执行选择排序消耗时间为:" + elapsed + "毫秒<br />")    arr = setData(length);    start = new Date().getTime();    insertSort(arr);    stop = new Date().getTime();    elapsed = stop - start;    document.write("对" + length + "个元素执行插入排序消耗时间为:" + elapsed + "毫秒<br />")}
  • 数据测试
timeElapsed(100)timeElapsed(10000);

这里100数据太小。差异不显著,因此再比较一次10000的数据集合

这里写图片描述

阅读全文
0 0
原创粉丝点击