首页 > 语言 > JavaScript > 正文

js算法中的排序、数组去重详细概述

2024-05-06 14:35:08
字体:
来源:转载
供稿:网友

其实在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; 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选