> 웹 프론트엔드 > JS 튜토리얼 > js Algorithm_javascript 기술의 정렬 및 배열 중복 제거에 대한 자세한 개요

js Algorithm_javascript 기술의 정렬 및 배열 중복 제거에 대한 자세한 개요

WBOY
풀어 주다: 2016-05-16 17:20:03
원래의
1333명이 탐색했습니다.

사실, 배열의 정렬 메소드를 사용하여 js에서 배열 정렬을 구현하는 것은 비교적 간단합니다.

1.정렬

간단한 배열 정렬 구현

코드 복사 코드는 다음과 같습니다.

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)

단순히 정렬을 사용할 수는 없습니다. 기본적으로 정렬 방법은 우리가 생각하는 숫자 크기가 아닌 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(시작 == 끝-1){
                                                                                 ~                          ​ [end],arr[start]]
          }else{ l = Math.floor((start end)/2); //왼쪽 배열
var arrLeft = sort(arr, start,l);
//오른쪽 배열
var arrRight = sort (arr,l 1,end); /Return result
var result = [];
//왼쪽과 오른쪽 배열을 두 부분으로 나누고 배열의 첫 번째 숫자만 비교합니다. 값이 작으면 결과에 넣고 삭제합니다. 작은 값을 배열에 사용하십시오. 왼쪽 배열 또는 오른쪽 배열이 나타나고 데이터가 없는 경우
//result 배열을 concat을 사용하여 데이터가 있는 배열과 결합하고 결과를 반환합니다
while(arrLeft.length>0 || arrRight.length> ;0 ){
if(arrLeft.length==0){
result = result.concat(arrRight)
break;
}else if(arrRight.length==0){
결과 = result.concat(arrLeft);
break;
if(arrLeft[0]                                                                                                                                          길이-1);//매개변수 배열 , 시작 위치, 끝 위치

document.write(arr '
' arrSort);


설명: 배열 정렬은 주로 배열을 더 이상 수행할 수 없을 때까지 두 개로 분할하는 작업을 포함하며, 결국 유일한 옵션은 배열의 길이가 홀수와 두 개로 나누어지기 때문에 배열을 하나 또는 두 개로 분할하는 것입니다. 분할 최종 배열에 1~2개만 있을 경우 정렬이 시작되고 결과가 반환되며, 이 결과를 하나씩 비교하여 병합합니다. 왜 이 방법이 이렇게 복잡할까 생각하실 수도 있는데, 항상 첫 번째 방법을 사용하면 안 되나요? 사실 당연히 할 수 있지만, 이 세상에는 아직도 성능이라는 단어가 있습니다. 계산된 결과 시간은 차이가 없습니다. 데이터가 수억 또는 수십억이면 여전히 첫 번째 방법을 사용할 자신감이 있습니까? 실제로 js의 알고리즘은 많은 문제를 작은 문제로 나누어서 정복하는 것입니다. 해결하다.

2. 배열에서 중복 제거

중복을 제거하는 쉬운 방법: 먼저 빈 배열을 선언하고 for 루프에 중복 배열을 삽입한 다음 반복 삽입을 건너뜁니다.

코드 복사 코드는 다음과 같습니다.

var arr = []
for(var i=0;i<20;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 deleteDup(arr){
var 결과 = [];
for(var i=0;i if(result.indexOf(arr[i]) == -1){

result.push(arr[i]);
      }                                   />' arr2)


중복 제거 알고리즘 배열



복사 code
코드는 다음과 같습니다.var arr = [] for(var i=0;i<20;i ){ arr.push(parseInt(Math.random()*10));
}
Array.prototype.indexOf = function(n){
for(var i=0;i if(this[i] == n){
           return i;                                          🎜>                     ~                                                                     🎜> if(arr[s]==arr[e]){
return [arr[s ]]
}else{
return [arr[s],arr[e]];
                                                                   s,l );
//오른쪽
var arrR = RemoveDup(arr,l 1,e);
//왼쪽부터 결과 복사
var result = arrL
//결과에 고유한 데이터를 삽입하는 루프
for(var i=0;i< arrR.length;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);


설명: 반복된 배열을 마지막에 하나의 데이터 또는 두 개의 배열만 남을 때까지 잘라내고, 왼쪽의 데이터를 결과에 넣고, 오른쪽의 반복 삽입을 반복하지 않고 건너뜁니다. 루프가 완료될 때까지 결과가 반환될 수 있습니다
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿