易截截图软件、单文件、免安装、纯绿色、仅160KB

测试几种排序算法的javascript实现及效能测试

用来排序对像数组的. 最后还是决定用Array对像的sort方法,尽管这些都没用上,还是自己记在空间里当笔记用的.
快速排序,优化的快速排序,忘了名子的排序方法,对像提供的排序;  绝对不要用起泡法,除非是教学生。
为了测试,写了一个生成随机对像的方法,用来生成一个对像,对像中有一个属性 a ,a 的值为一个随机数字.以下为生成Array的方法:
function getRandomStr(){
return Math.round((1000 - 1 + 1 ) * Math.random() + 1);
}
var arr = new Array();
for(var i=0;i<5000;i++){
arr.push({a:getRandomStr()});
}
方法零:
 
方法一
 
实现原理:
     遍历数组,取得其中最大值(最小值也可以),将取到的值移到队列的最后,然后再次遍历至数组长度-1的位置,如此反复,直到最后需要遍历的位置长度为0 时为止,由于遍历次数只与数组长度有关,所以每次运行的次数是固定的. 即一个1 至 数组最大下标的累加值;
实现代码:
// 快速排序;
function SortObject1(arr){
// 记录数组最后需要遍历的位置
var leavings = arr.length;

// 准备交换对像用的临时变量;
var p1 = arr[0],p=0,tmp;

// 遍历数组;
while(leavings != 0){
// 寻找数组中最大的值
for(var i=0;i < leavings;i++){
if(arr[i].a > p1.a){
p1 = arr[i];
p = i;
}
}
//移动最大数据对像到队尾;
leavings--;
tmp = arr[p];
arr[p] = arr[leavings];
arr[leavings] = tmp;
p1=arr[0],p=0;

}
}
方法二
实现原理:
    优化第一种算法,在寻找最大值的同时,寻找最小值,将最大值移动到队尾,将小值移动到队头,则于参与运算的数组长度每次-2 所以运行次数为 1  +3 +5 +7 +9 + (i)  , i<=Array.length
实现代码:(注释省了,跟上的一样,只是另一个if同时在找最小的值.)
function SortObject2(arr){
var leavings_e = arr.length;
var leavings_s = 1
var p_max = arr[0],p_max_l=0,tmp;
var p_min = arr[0],p_min_l=0,tmp;
while(leavings_e > leavings_s){
for(var i=leavings_s;i<leavings_e;i++){
if(arr[i].a > p_max.a){
p_max = arr[i];
p_max_l = i;
}
if(arr[i].a < p_min.a){
p_min = arr[i];
p_min_l = i;
}


相关文档:

JavaScript 获取对象的高度和宽度详细说明

scrollHeight: 获取对象的滚动高度。
scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离
scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离
scrollWidth:获取对象的滚动宽度
offsetHeight:获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的高度
offsetL ......

Javascript的四种继承方式

      在Javascript中,所有开发者定义的类都可以作为基类,但出于安全性考虑,本地类和宿主类不能作为基类,这样可以防止公用访问编译过的浏览器级的代码,因为这些代码可以被用于恶意攻击。
      选定基类后,就可以创建它的子类了。是否使用基类完全由你决定。有时 ......

《JavaScript 征途》 读后感

我是一名程序员,使用Java语言进行管理软件开发工作。有一次开发项目中使用JavaScript来丰富用户体验效果,特地认真的学习了一下,从此对JavaScript产生了浓厚的兴趣。有机会参加了由电子工业出版社飞思公司举办的《JavaScript征途》读后感有奖召集活动,获得赠书学习。由于本人文学水平有限,此读后感的用词不当之处还望多 ......

javascript 历史栈

var Stack=function(limt_length){
this.stack=new Array();
this.limt=(limt_length)?limt_length:8;
}
Stack.prototype.push=function(o){
 if(this.exist(o)){
  this.remove(o);
  this.stack.unshift(o);
 }else{
  this.stack.unshift(o);
 }
 while(t ......

JavaScript调试技巧之:断点调试


首先,在各个浏览器中,断点调试支持的最好的当然是Firefox,Firefox不仅可以使用Firebug调试页面js脚本,还可以用高级调试工具例如JavaScript Debugger (Venkman) 来调试Firefox扩展里的js。除此之外,Firefox还支持一些更为高级的断点调试、变量监视功能。
其他浏览器里,Opera、Chrome和Safari的调试功能也比较好用。 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号