当前位置:   article > 正文

记录一下冒泡排序和sort()排序

记录一下冒泡排序和sort()排序

今天有空,整理了一下写过的javascript排序方法。排序方法很多,我了解的不算多,这里记录下知道的冒泡排序和js自带的sort()排序。

1. 冒泡排序

  1. function BubbleSort(arr) {
  2. var len = arr.length;
  3. for (var i = 0; i < len; i++) {
  4. for (var j = 0; j < len - 1 - i; j++) {
  5. if (arr[j] > arr[j+1]) { //相邻元素两两对比
  6. var temp = arr[j+1]; //元素交换
  7. arr[j+1] = arr[j];
  8. arr[j] = temp;
  9. }
  10. }
  11. }
  12. return arr;
  13. }
  14. var arr=[5,1,0,9,3,10,26,8];
  15. console.log(BubbleSort(arr)); //[0, 1, 3, 5, 8, 9, 10, 26]

2. 这里要说的是sort()排序

 值得注意的时,如果数组是纯数字组成的,使用sort()方法并不能得到想要的效果。如下

  1. var arr1=[5,1,0,9,3,10,26,8];
  2. console.log(arr1.sort()); //[0, 1, 10, 26, 3, 5, 8, 9]
这并不是排序的结果。因为sort()的 默认排序方式是按字符串排序的。

  1. //按字符排序
  2. var str = ['yangzhou','suzhou','nanjin','beijin'];
  3. console.log(str.sort());//["beijin", "nanjin", "suzhou", "yangzhou"],字符排序(按字符编码的顺序进行排序),能得到很好的效果

那怎么给数字排序呢?

  * 可以在javascript中实现自己的回调函数实现数字数组的排序
  * 回调函数的工作,它返回:
  *     1.如果传递给他的两个元素相等的话,返回0.
  *     2.如果认为第一个参数大于第二个参数,将返回一个正数.
  *     3.如果认为第一个参数小于第二个参数,将返回一个负数.

  1. 升序:
  2. var theArray=[2,3,5,1,15,8,12,11,7];
  3. function des(a,b){
  4. return a-b;
  5. }
  6. console.log(theArray.sort(des));


  1. 降序
  2. var theArray=[2,3,5,1,15,8,12,11,7];
  3. function des(a,b){
  4. return b-a;
  5. }
  6. console.log(theArray.sort(des));

解释:a,b表示数组中的任意两个元素,若return > 0 b前a后;reutrn< 0 ab后;a=b时存在浏览器兼容

简化一下: a-b 输出从小到大排序, b-a 输出从大到小排序。

附上,随机排序

  1. var nums = [1,2,9,10,8,11];
  2. console.log(nums.sort(function(a,b){
  3. return 0.5 - Math.random();
  4. })); //[2, 1, 9, 11, 10, 8]

这里备注一下:该文章中部分引用了 wming3博主的相关知识(http://blog.csdn.net/u010187139/article/details/45933545)。感谢博主的知识分享。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/807094
推荐阅读
相关标签
  

闽ICP备14008679号