사실, 배열의 정렬 메소드를 사용하여 js에서 배열 정렬을 구현하는 것은 비교적 간단합니다.
단순히 정렬을 사용할 수는 없습니다. 기본적으로 정렬 방법은 우리가 생각하는 숫자 크기가 아닌 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);
설명: 반복된 배열을 마지막에 하나의 데이터 또는 두 개의 배열만 남을 때까지 잘라내고, 왼쪽의 데이터를 결과에 넣고, 오른쪽의 반복 삽입을 반복하지 않고 건너뜁니다. 루프가 완료될 때까지 결과가 반환될 수 있습니다