ys3399盈丰国际官网网址冒泡排序问题???

2016/12 01 14:12
此文章不得转载,如有需要请联系网站管理员。

一度的温暖,一百度的爱情,来自于ys3399盈丰国际官网网址的点点滴滴

forvar r=1;r<my_data.length;r++{
               forvar i=0;i<my_data.length-r;i++{
                  ifmy_data[i+1]!=undefined{
                    ifmy_data[i].b_val>my_data[i+1].b_val{
                        my_data[i]=[my_data[i+1],my_data[i+1]=my_data[i]][0];
                    }                  
                  }
              }
          }

问一下如许写冒泡有什么错?
根据数组里东西的属性(b_val)排序 为什么会如许?

关键在于:js东西是按援用转达的。

// 缘由分析:
// 此时,my_data[i+1] = my_data[i]改动了my_data[i+1]的援用;
// 然后,[my_data[i+1],my_data[i+1]=my_data[i]][0]取到的东西,是my_data[i]
my_data[i]=[my_data[i+1],my_data[i+1]=my_data[i]][0]

// 改进:运用一此两头变量
var tmp = my_data[i];
my_data[i] = my_data[i+1];
my_data[i+1] = tmp;

拍出可行版本冒泡排序:做了一点点优化。

function bubble my_data  {
  var length = my_data.length;
  var flag;
  for var r = 0; r < length-1; r++ {  // r表现中断了多少趟
    flag = true;  // flag表现以后趟能否冒泡,true代表没有冒泡,当一趟排序后,没有冒泡就代表排好序了,就中断冒泡,立即前往排序后的数组。
    for var i = 0; i < length - r; i++ {
      if  my_data[i].b_val > my_data[i+1].b_val  {
        var tmp = my_data[i];
        my_data[i] = my_data[i+1];
        my_data[i+1] = tmp;
        flag = false;
        console.logmy_data;
      };
    };
    if  flag  {
      return my_data;
    };
  };
  return my_data;
};

(看完/读完)这篇文章有何感想! 来看看ys3399盈丰国际官网网址是怎么评论的吧!

--转载请注明: ys3399盈丰国际官网_www.ys3399.com_ys3399盈丰国际官网网址 » ys3399盈丰国际官网网址冒泡排序问题???

发表评论

(必填)