自己写的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(' '));
展开
 我来答
kq_000
2015-10-29 · 超过40用户采纳过TA的回答
知道答主
回答量:167
采纳率:100%
帮助的人:73.6万
展开全部
for (var j=0;j<arr.length;++j)改为for (var j=i;j<arr.length;++j)试试,呵呵
追问
有用!大神,这是什么原因啊?我的循环遍历难道有问题?我的遍历不过是会出现重复的遍历,但应该不会影响结果才对啊?为什么会出现这个问题?请详细解释具体原因是什么?谢谢。
追答
是啊,重复比较难免出现问题,你可以看看算法的书,认真研究一下算法
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式