JavaScript实现对三种基本排序算法的计时比较
2019-03-20 20:50
155 查看
冒泡、选择、插入是三种基本的排序算法,那么谈们的执行效率如何呢?接下来我们将随机生成10000个0~10000之间的数字,用这三种算法分别进行排序,比较它们消耗的时间,以此来观察执行效率的不同。
1.创建数集
首先,创建三个数组,并将其各自加入10000个随机生成的数值:
var arr1 = []; var arr2 = []; var arr3 = []; for(var i = 0;i < 10000;i++){ num = Math.ceil(Math.random()*10000); arr1.push(num); arr2.push(num); arr3.push(num); }
2.封装函数
将冒泡、选择、插入三种排序算法分别封装为三个函数,以便于执行。
(1)冒泡排序:
function bubble(){ for(var i=0;i<arr1.length-1;i++){ for(var j=0;j<arr1.length-i-1;j++){ if(arr1[j]>arr1[j+1]){ tem = arr1[j]; arr1[j] = arr1[j+1]; arr1[j+1] = tem; } } } }
(2)选择排序
var min,temp; function selection(){ for(var outer = 0;outer <= arr2.length-2;outer++){ min = outer; for(var inner = outer + 1;inner <=arr2.length-1;inner++){ if(arr2[inner]<arr2[min]){ min = inner; temp = arr2[min]; arr2[min] = arr2[outer]; arr2[outer] = temp; } } } }
(3)插入排序
function insertion(){ var tem2,inner2; for(var outer2 = 1;outer2 <= arr3.length-1;outer2++){ tem2 = arr3[outer2]; inner2 = outer2; while(inner2 > 0 && arr3[inner2-1]>arr3[inner2]){ arr3[inner2] = arr3[inner2-1]; inner2--; arr3[inner2] = tem2; } } }
3.使用Data对象的
getTime()方法进行计时
在开始和结束分别进行计时,将其时间相减,得出耗费的时间。
var start1 = new Date().getTime(); bubble(arr1); var stop1 = new Date().getTime(); var time1 = stop1 - start1; console.log("冒泡排序用时"+time1+"毫秒"); var start2 = new Date().getTime(); selection(arr2); var stop2 = new Date().getTime(); var time2 = stop2 - start2; console.log("选择排序用时"+time2+"毫秒"); var start3 = new Date().getTime(); insertion(arr3); var stop3 = new Date().getTime(); var time3 = stop3 - start3; console.log("插入排序用时"+time3+"毫秒");
在控制台的输出结果为:
很明显,插入排序耗用时间最少,冒泡排序耗费时间做多,而选择排序处于二者之间,但也明显优于冒泡排序。如果继续加大数集的样本,差距会更加明显。
这充分证明了三种排序的执行效率:
插入排序 > 选择排序 > 冒泡排序
相关文章推荐
- 利用 openmp 实现在intel多核系统上 基本排序算法性能比较
- 菜鸟学编程之三:三种最基本排序算法的实现(冒泡排序、选择排序、直接插入排序)
- 基本排序算法的实现(我的练习 快速排序有三种实现方式,值得关注)
- javascript数据结构与算法--基本排序算法(冒泡、选择、排序)及效率比较
- 利用 openmp 实现在intel多核系统上 基本排序算法性能比较
- 三种初级排序算法(冒泡、选择、直接插入)java实现及其性能比较
- JavaScript数据结构与算法之基本排序算法定义与效率比较【冒泡、选择、插入排序】
- 排序算法的JavaScript实现
- 关于ViewPager、ViewFilpper、ViewFlow三种实现水平向滑动方式的比较
- 基本排序算法思路总结及Java实现
- 基本排序算法——插入排序java实现
- 基本排序算法——选择排序java实现
- 三种基本的存储引擎比较
- javascript 网页中实现一个计算当年还剩多少时间的倒数计时程序
- 一起学英语 | 用JavaScript实现数字阶乘的三种方法
- 用javascript实现页面打印的三种方法
- 三种排序算法的 C 语言实现
- 用HTML5实现的各种排序算法的动画比较
- [javascript] js中判断对象是否为空的三种实现方法