自己写的javascript数组排序函数,虽然效果实现了,但结果不是我预想的那样,这是为什么?
vara=[5,2,3,1,4];functionsort_arr(arr){for(vari=0;i<arr.length;++i){for(varj=0;j<arr....
var a=[5,2,3,1,4];
function sort_arr(arr){
for (var i=0;i<arr.length;++i)
{
for (var j=0;j<arr.length;++j)
{
if (arr[i]>arr[j]) //就是这个地方,我一直感觉纳闷?首先我要的效果是升序排序,,所以就循环得将数组中的每一个元素分别和数组的所有元素进行比较,我这样做目的是要将较小的值按照升序顺序保存起来,但,结果却是较大的值按照降序顺序进行保存!我都快被气得无语了。此事怎么破?将条件判断改为 < 虽然可以实现我要的结果,但不知道原因啊!所以请详细解释原因是什么?是我的逻辑有问题吗?
{
var arr_big=arr[i]; //保存arr[i]
var arr_small=arr[j]; //保存arr[j]
arr[i]=arr_small; //将较小的值赋给arr[i];
arr[j]=arr_big; //将较大的值赋给arr[j];
}
}
}
}
sort_arr(a);
alert(a.join(' ')); 展开
function sort_arr(arr){
for (var i=0;i<arr.length;++i)
{
for (var j=0;j<arr.length;++j)
{
if (arr[i]>arr[j]) //就是这个地方,我一直感觉纳闷?首先我要的效果是升序排序,,所以就循环得将数组中的每一个元素分别和数组的所有元素进行比较,我这样做目的是要将较小的值按照升序顺序保存起来,但,结果却是较大的值按照降序顺序进行保存!我都快被气得无语了。此事怎么破?将条件判断改为 < 虽然可以实现我要的结果,但不知道原因啊!所以请详细解释原因是什么?是我的逻辑有问题吗?
{
var arr_big=arr[i]; //保存arr[i]
var arr_small=arr[j]; //保存arr[j]
arr[i]=arr_small; //将较小的值赋给arr[i];
arr[j]=arr_big; //将较大的值赋给arr[j];
}
}
}
}
sort_arr(a);
alert(a.join(' ')); 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询