最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

javascript算法中的排序方法使用详解

来源:懂视网 责编:小采 时间:2020-11-27 20:15:25
文档

javascript算法中的排序方法使用详解

javascript算法中的排序方法使用详解:其实在js中实现数组排序,采用数组中sort方法实现还是比较简单的:一、排序简单实现数组排序var arr = []; for(var i=0;i<20;i++){ arr.push(Math.floor(Math.random()*100)) } arr.sort(function(a,b){ return a
推荐度:
导读javascript算法中的排序方法使用详解:其实在js中实现数组排序,采用数组中sort方法实现还是比较简单的:一、排序简单实现数组排序var arr = []; for(var i=0;i<20;i++){ arr.push(Math.floor(Math.random()*100)) } arr.sort(function(a,b){ return a

其实在js中实现数组排序,采用数组中sort方法实现还是比较简单的:

一、排序

简单实现数组排序

var arr = []; 
for(var i=0;i<20;i++){ 
 arr.push(Math.floor(Math.random()*100)) 
} 
arr.sort(function(a,b){ 
 return a>b?1:-1; 
}) 
alert(arr)

不能简单使用sort方法,默认情况下 sort方法是按ascii字母顺序排序的,而非我们认为是按数字大小排序,

sort() 方法可以接受一个 方法为参数 ,这个方法有两个参数。分别代表每次排序比较时的两个数组项。sort()排序时每次比较两个数组项都回执行这个参数,并把两个比较的数组

项作为参数传递给这个函数。当函数返回值为1的时候就交换两个数组项的顺序,否则就不交换。

算法的数组排序

var arr = []; 
for(var i=0;i<20;i++){ 
 arr.push(Math.floor(Math.random()*100)) 
} 
//生成一个无序的arr数组 
function sort(arr,start,end){ 
 //数组长度为1 
 if(start == end ){ 
 return [arr[start]] 
 }else if(start == end-1){ 
 //数组长度为2,根据数值大小 来排序 
 if(arr[start]>arr[end]){ 
  return [arr[end],arr[start]] 
 }else{ 
  return [arr[start],arr[end]] 
 } 
 } 
 // 数组长度一半 
 var l = Math.floor((start+end)/2); 
 //左边数组 
 var arrLeft = sort(arr, start,l); 
 //右边数组 
 var arrRight = sort(arr,l+1,end); 
 //返回结果 
 var result = []; 
 //分割成两部分 左右两个数组 只比对数组中的第一个数,那个数值小就把谁放到结果里面,并把小的数值删除掉,固采用数组中的shift方法。一旦出现左边数组或右边数组,没有数据的时候 
 //result数组就与还有数据的数组合并 采用 concat,并返回结果 
 while(arrLeft.length>0 || arrRight.length>0){ 
 if(arrLeft.length==0){ 
  result = result.concat(arrRight); 
  break; 
 }else if(arrRight.length==0){ 
  result = result.concat(arrLeft); 
  break; 
 } 
 if(arrLeft[0]<arrRight[0]){ 
  result.push(arrLeft.shift()) 
 }else{ 
  result.push(arrRight.shift()); 
 } 
 } 
 return result; 
} 
var arrSort = sort(arr,0,arr.length-1);//参数 数组,开始位置,结束位置 
document.write(arr+'<br/>'+arrSort);

讲解:数组排序主要是采用将数组一拆为二,直到不能为之,最后只能是拆掉数组里面只能是一个或者是两个,因为数组的长度有奇数偶数之分,拆到最后 数组里面只有一个或者两个之后 开始排序并返回结果,并将这些结果在一一比对 进行合并。这个方法 可能大家觉得 为什么要这么复杂,一直采用第一种不行吗,其实当然可以啦,但是这个世界上还有性能这个词汇,当数据之后几个 几十个 几个百 ,大家的算出的结果时间是没有什么区别的 ,如果当数据庞大的几亿 几十亿 我们还有这种自信用第一种方法吗,其实js的算法就是分而治之,将很多问题划分成小的来解决。

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

javascript算法中的排序方法使用详解

javascript算法中的排序方法使用详解:其实在js中实现数组排序,采用数组中sort方法实现还是比较简单的:一、排序简单实现数组排序var arr = []; for(var i=0;i<20;i++){ arr.push(Math.floor(Math.random()*100)) } arr.sort(function(a,b){ return a
推荐度:
标签: 方法 js 排序
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top