Merlin

Life was like a box of chocolates. You never know what you're gonna get.

   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  34 随笔 :: 0 文章 :: 40 评论 :: 0 Trackbacks
< html >
< body >

< script type = " text/javascript " >

function  sortNumber(a, b)
{
return  a  -  b
}


var  arr  =   new  Array( 6 )
arr[
0 =   " 10 "
arr[
1 =   " 5 "
arr[
2 =   " 40 "
arr[
3 =   " 25 "
arr[
4 =   " 1000 "
arr[
5 =   " 1 "

document.write(arr 
+   " <br /> " )
document.write(arr.sort(sortNumber))

</ script >

</ body >
</ html >
我不明白sortNumber在用的时候为什么没有提供参数? 谁有sort函数的源代码,就是函数是怎么定义的,给俺发一个,谢谢。
posted on 2006-04-10 14:49 Merlin 阅读(354) 评论(5)  编辑 收藏 引用 所属分类: 问题

评论

# re: javascript 中的sort() 2006-04-10 17:05 芋头
arr.sort(sortNumber)
这里的sortNumber可以理解为成C++中的仿函数,传递的是一个函数对象,sort函数里面会调用它,并传递给它2个参数。sortNumber函数要求返回正、负或零值。sort函数可能是使用qsort实现的,网上有很多资料,自己实现一个也不难。  回复  更多评论
  

# re: javascript 中的sort() 2006-04-10 17:42 Merlin
谢谢芋头的回复,你说的我也知道,我也查了,我就是想看看这个函数是怎么定义的,有没有相关的文档,就是讲述javascript中的函数怎么实现的。我想看看它是怎么写的函数。我在网上没有查到。  回复  更多评论
  

# re: javascript 中的sort() 2006-04-10 17:53 芋头
简单实现了一个,没有处理默认参数,比如arr.sort(),可以不传递这个参数,我没有处理它。#符号是为了保持格式,不过页面上显示不了,可能是字体不对。

注:修改了一下,可以处理默认参数。

< script type="text/javascript" >

function sortNumber(a,b)
{
return a-b;
}

function swap (arr, idx1, idx2) {
var tmp = arr[idx1];
arr[idx1] = arr[idx2];
arr[idx2] = tmp;
}

function qsort (arr, l, r, sortFunction) {
if (l >= r)
return;
if (r-l == 1)
{
if (sortFunction(arr[r], arr[l]) < 0)
swap(arr, l, r);
return;
}

var pivot = l + Math.round((r-l) / 2);

swap(arr, l, pivot);

var pointer = l+1;
for (var i=l+1; i<=r; ++i){
if (i != pointer && sortFunction(arr[i], arr[l]) < 0){
swap (arr, pointer++, i);
}
}
swap(arr, l, pointer);

qsort(arr, l, pointer-1, sortFunction);
qsort(arr, pointer, r, sortFunction);
}

Array.prototype.mysort=function(sortFunction)
{
if (this.length <= 1)
return this;
if (sortFunction == undefined)
sortFunction = function (a, b){
return a-b;
}

qsort (this, 0, this.length - 1, sortFunction);
return this;
}

var arr=new Array(6)
arr[0]="10"
arr[1]="5"
arr[2]="40"
arr[3]="25"
arr[4]="1000"
arr[5]="1"

document.write(arr+"
")
document.write(arr.mysort(sortNumber))

< /script >  回复  更多评论
  

# re: javascript 中的sort() 2006-04-10 17:55 芋头
汗。。。。格式保持不了,将就着看吧。  回复  更多评论
  

# re: javascript 中的sort() 2006-04-10 18:00 Merlin
感谢,正在看中。。。  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理