suchen
HeimWeb-Frontendjs-Tutorialjs算法中的排序、数组去重详细概述_javascript技巧

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

一、排序

简单实现数组排序

复制代码 代码如下:

var arr = []; 
for(var i=0;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    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]            result.push(arrLeft.shift()) 
        }else{ 
            result.push(arrRight.shift()); 
        } 
    } 
    return result; 

var arrSort = sort(arr,0,arr.length-1);//参数 数组,开始位置,结束位置 

document.write(arr+'
'+arrSort);

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

二、数组去掉重复

简单方法去掉重复:先声明一个空的数组,将重复的数组 for 循环插入,重复的跳过 不重复的插入

复制代码 代码如下:

var arr = []; 
for(var i=0;i    arr.push(parseInt(Math.random()*10)); 

Array.prototype.indexOf = function(n){ 
    for(var i=0;i        if(this[i] == n){ 
            return i; 
        } 
    } 
    return -1; 

function removeDup(arr){ 
    var result = []; 
    for(var i=0;i        if(result.indexOf(arr[i]) == -1){ 

            result.push(arr[i]); 
        } 
    } 
    return result;  

var arr2 = removeDup(arr) 
document.write(arr+'
'+arr2)

算法数组去掉重复
复制代码 代码如下:

var arr = []; 
for(var i=0;i    arr.push(parseInt(Math.random()*10)); 

Array.prototype.indexOf = function(n){ 
    for(var i=0;i        if(this[i] == n){ 
            return i; 
        } 
    } 
    return -1; 

function removeDup(arr,s,e){ 
    if(s==e){ 
        //分割就剩下一个 
        return [arr[s]] 
    }else if(s==e-1){ 
        //为了优化 剩下两个就不用分割啦 
        if(arr[s]==arr[e]){ 
            return [arr[s]] 
        }else{ 
            return [arr[s],arr[e]]; 
        } 
    } 
    //数组平分成两段, 
    var l = Math.floor((s+e)/2); 
    //左边 
    var arrL = removeDup(arr,s,l); 
    //右边 
    var arrR = removeDup(arr,l+1,e); 
    //结果 先把左边的复制进去 
    var result = arrL; 
    //循环 将不重复的数据插入到结果里面 
    for(var i=0;i        if(result.indexOf(arrR[i])== -1 ) result.push(arrR[i]) 
    } 
    return result; //返回结果 

var arrDup = removeDup(arr, 0, arr.length-1); 
document.write(arr+'
'+arrDup);

讲解:将重复的数组 切割,拆分到最后只剩下一个数据或或者两个数组,将左边的数据放到结果里面,右边重复的跳过 不重复插入,直到循环完,返回结果就可以
Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
使用Python实现XML数据的筛选和排序使用Python实现XML数据的筛选和排序Aug 07, 2023 pm 04:17 PM

使用Python实现XML数据的筛选和排序引言:XML是一种常用的数据交换格式,它以标签和属性的形式存储数据。在处理XML数据时,我们经常需要对数据进行筛选和排序。Python提供了许多有用的工具和库来处理XML数据,本文将介绍如何使用Python实现XML数据的筛选和排序。读取XML文件在开始之前,我们需要先读取XML文件。Python有许多XML处理库,

C++程序:按字母顺序重新排列单词的位置C++程序:按字母顺序重新排列单词的位置Sep 01, 2023 pm 11:37 PM

在这个问题中,一个字符串被作为输入,我们必须按字典顺序对字符串中出现的单词进行排序。为此,我们为字符串中的每个单词(之间用空格区分)分配一个从1开始的索引,并以排序索引的形式获得输出。String={“Hello”,“World”}“Hello”=1“World”=2由于输入字符串中的单词已按字典顺序排列,因此输出将打印为“12”。让我们看看一些输入/结果场景-假设输入字符串中的所有单词都相同,让我们看看结果-Input:{“hello”,“hello”,“hello”}Result:3获得的结

如何优化Java集合排序性能如何优化Java集合排序性能Jun 30, 2023 am 10:43 AM

Java是一种功能强大的编程语言,广泛应用于各类软件开发中。在Java开发中,经常会涉及到对集合进行排序的场景。然而,如果不对集合排序进行性能优化,可能会导致程序的执行效率下降。本文将探讨如何优化Java集合排序的性能。一、选择合适的集合类在Java中,有多种集合类可以用来进行排序,如ArrayList、LinkedList、TreeSet等。不同的集合类在

Java开发中如何优化集合排序去重性能Java开发中如何优化集合排序去重性能Jul 02, 2023 am 11:25 AM

Java开发中,集合排序和去重是常见的需求。然而,在处理大数据集合时,性能往往会成为一个问题。本文将介绍一些优化技巧,帮助提升集合排序和去重的性能。一、使用合适的数据结构在Java中,最常用的数据结构是ArrayList和HashSet。ArrayList适用于需要保持元素顺序的情况,而HashSet则适用于需要去重的情况。在排序和去重的场景中,我们可以使用

如何利用vue和Element-plus实现数据的分组和排序如何利用vue和Element-plus实现数据的分组和排序Jul 18, 2023 am 10:39 AM

如何利用Vue和ElementPlus实现数据的分组和排序Vue是一种流行的JavaScript框架,它可以帮助我们构建前端应用程序。ElementPlus是基于Vue的桌面端组件库,它提供了丰富的UI组件,使我们能够轻松地构建出漂亮且用户友好的界面。在本文中,我们将探讨如何利用Vue和ElementPlus来实现数据的分组和排序。首先,我们需要准备一

Java实现的常见排序算法详解Java实现的常见排序算法详解Jun 18, 2023 am 10:48 AM

排序算法是计算机科学中的一个重要概念,是许多应用程序的核心部分。在日常生活和工作中,我们经常需要对数据进行排序,例如排列名单、对数值进行排序等。Java作为一种广泛使用的编程语言,提供了许多内置的排序算法。本文将详细介绍Java中实现的常见排序算法。1.冒泡排序(BubbleSort)冒泡排序是最简单但最慢的排序算法之一。它遍历整个数组,比较相邻的元素并一

PHP usort() 函数使用指南:排序数组PHP usort() 函数使用指南:排序数组Jun 27, 2023 pm 02:27 PM

PHPusort()函数使用指南:排序数组在PHP编程中,我们经常需要对数组进行排序。PHP提供了很多函数用于数组的排序,其中usort()函数可以灵活的对数组进行自定义排序。本文将介绍usort()函数的使用方法和注意事项,并通过实例演示如何使用usort()函数对数组进行排序。一、usort()函数简介PHPusort()函数

如何在Java 14中使用Records类来实现自动比较和排序如何在Java 14中使用Records类来实现自动比较和排序Jul 30, 2023 pm 01:06 PM

如何在Java14中使用Records类来实现自动比较和排序Java14引入了一种新的类称为Records类,它为我们提供了一种简洁而强大的方式来定义不可变的数据类。Records类具有自动为每个字段生成getter方法、equals()方法和hashCode()方法的特性,这使得比较和排序非常方便。在这篇文章中,我们将通过示例代码来演示如何在Java

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Sicherer Prüfungsbrowser

Sicherer Prüfungsbrowser

Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools