JS排序方法


1. 冒泡排序


解析:
比较相邻的两个元素,如果前一个比后一个大,则交换位置。
第一轮的时候最后一个元素应该是最大的一个。
按照步骤一的方法进行相邻两个元素的比较,这个时候由于最后一个元素已经是最大的了,所以最后一个元素不用比较。
 
js代码实现

function bubble_sort(arr){
  for(var i=0;i<arr.length-1;i++){
    for(var j=0;j<arr.length-i-1;j++){
      if(arr[j]>arr[j+1]){
        var swap=arr[j];
        arr[j]=arr[j+1];
        arr[j+1]=swap;
      }
    }
  }
}
 var arr=[3,1,5,7,2,4,9,6,10,8];
bubble_sort(arr);
console.log(arr);


2.快速排序


解析:快速排序是对冒泡排序的一种改进,第一趟排序时将数据分成两部分,一部分比另一部分的所有数据都要小。然后递归调用,在两边都实行快速排序。

function quick_sort(arr){
  if(arr.length<=1){
    return arr;
  }
  var pivotIndex=Math.floor(arr.length/2);
  var pivot=arr.splice(pivotIndex,1)[0];
  var left=[];
  var right=[];
  for(var i=0;i<arr.length;i++){
    if(arr[i]<pivot){
      left.push(arr[i]);
    }else{
      right.push(arr[i]);
    }
  }
  return quick_sort(left).concat([pivot],quick_sort(right));
}
var arr=[5,6,2,1,3,8,7,1,2,3,4,7];
console.log(quick_sort(arr));


3.插入排序


解析:
从第一个元素开始,该元素可以认为已经被排序
取出下一个元素,在已经排序的元素序列中从后向前扫描
如果该元素(已排序)大于新元素,将该元素移到下一位置
重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
将新元素插入到下一位置中
重复步骤2
js代码实现
 

function insert_sort(arr){
  var i=1,
  j,key,len=arr.length;
  for(;i<len;i++){
    var j=i;
    var key=arr[j];
    while(--j>-1){
      if(arr[j]>key){
        arr[j+1]=arr[j];
      }else{
        break;
      }
    }
 
    arr[j+1]=key;
  }
 
  return arr;
}
 
insert_sort([2,34,54,2,5,1,7]);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在JavaScript中,sort()是用于对数组进行排序方法。sort()可以按照默认的字符顺序对数组中的元素进行排序,也可以使用自定义的排序函数来指定排序规则。 默认情况下,sort()方法将数组元素转换为字符串,并按照Unicode码点进行排序。这意味着它在对数字进行排序时可能不会按照我们预期的顺序进行。 如果我们想要指定自定义的排序规则,我们可以通过传递一个比较函数作为参数来实现。比较函数接受两个参数,并根据这两个参数的关系返回一个负数、零或正数,来决定它们在排序结果中的顺序。如果第一个参数应该排在第二个参数之前,则返回一个负数,如果它们的顺序应该保持不变,则返回零,如果第一个参数应该排在第二个参数之后,则返回一个正数。 下面是一个示例:假设我们有一个对象数组,每个对象具有name和age属性。我们可以使用sort()方法按照name属性的字母顺序对数组进行排序,可以使用如下的比较函数: ``` function compare(a, b) { if (a.name < b.name) { return -1; } if (a.name > b.name) { return 1; } return 0; } array.sort(compare); ``` 这样,数组将按照name属性的字母顺序进行排序。如果要按照age属性进行排序,只需相应地修改比较函数即可。 需要注意的是,sort()方法会修改原始数组,而不是返回一个新的排序后的数组。因此,在使用sort()方法之前,最好先创建原始数组的副本,以防止不需要的副作用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [jssort:JavaScript排序方法,将按给定数组中对象的多个字段进行排序](https://download.csdn.net/download/weixin_42112894/18494492)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [js中数组排序sort方法的原理分析](https://download.csdn.net/download/weixin_38535808/13209337)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Js sort排序使用方法](https://download.csdn.net/download/weixin_38615591/13064684)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值