易截截图软件、单文件、免安装、纯绿色、仅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日期对象

1.日期对象的构造
1.1当前日期
          var now = new Date();
    1.2特定日期
var someDate = new Date(yyyy,mm,dd);
    注:月应该是从0开始计数的.
   2. 日期函数的使用可以参照下面的链接. http://www.w3schoo ......

JavaScript方法和技巧大全


JavaScript方法和技巧大全  基础知识
1 创建脚本块  <script language=”JavaScript”> JavaScript code goes here </script>
2 隐藏脚本代码  <script language=”JavaScript”><!-- document.write(“Hello”); --> </script>
在不支持 ......

应用最广的十大Javascript框架

近日,知名技术开发网站SYS-CON 媒体列出十个应用最广的Javascript框架,文章说,Javascript库已经成为设计优秀网站的基础,当今几乎所有站点都带有Javascript或Ajax元素。在Web2.0开发大潮中,它也许是最关键的要素。
以下十个十大Javascript框架,你常用其中的几个?
1. script.aculo.us (http://script.aculo.us/)
UR ......

在JavaScript中实现高效的StringBuffer

JavaScript中的String是只读的,所以每次对String变量的操作都会在内存中产生一个零时变量,如果要对字符串进行大量的重复操作,性能和效率都会很低下,因此常用数组的方法操作字符串,即先把字符串都存储在数组中,然后使用join()方法连接字符串。
当然可以把这种方法再演变一下,在JavaScript中模拟StringBuffer类。
看 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号