>웹 프론트엔드 >JS 튜토리얼 >JavaScript는 빠른 정렬 분석을 구현합니다.

JavaScript는 빠른 정렬 분석을 구현합니다.

小云云
小云云원래의
2018-01-11 09:06:271806검색

본 글은 주로 자바스크립트에서 퀵 정렬을 구현하는 방법을 소개하며, 퀵 정렬의 원리와 구현 방법, 관련 동작 주의사항을 예시 형태로 분석해 도움이 필요한 분들에게 도움이 되었으면 좋겠습니다.

아이디어:

분할 및 정복 사고와 재귀적 방법을 통해 데이터를 더 작은 요소와 더 큰 요소를 포함하는 여러 하위 시퀀스로 분해합니다.

1 배열의 요소를 기본으로 선택합니다

2. , 벤치마크보다 작은 요소는 벤치마크의 왼쪽으로 이동하고, 벤치마크보다 큰 요소는 벤치마크의 오른쪽으로 이동합니다.

3. 벤치마크의 왼쪽과 오른쪽에 있는 두 하위 집합에 대해 처음 두 단계를 반복합니다. 모든 하위 집합에 요소가 하나만 남을 때까지

구현 코드:


function sqort(arr){
 if(arr.length===0){
 return [];
}
var left=[];
var right=[];
var pivot=arr[0];//(基准以首元素)
for(var i=1;i<arr.length;i++){
 if(arr[i]<pivot){
 left.push(arr[i]);
}else{
 right.push(arr[i]);
}
}
return sqort(left).concat(pivot,qsort(right));//递归
}
var a=[];
for (i=0;i<10;++i){
a[i]=Math.floor(Math.random()*100+1);
}
console.log(a);
console.log(sqort(a));
//(基准以中间元素的情况)
function sqort(arr){
 if(arr.length<=1){
 return arr;
}
var left=[];
var right=[];
var pivotIndex=Math.floor(arr.length/2);
var pivot=arr.splice(pivotIndex,1)[0];//(基准以中间元素)
for(var i=1;i<arr.length;i++){
 if(arr[i]<pivot){
 left.push(arr[i]);
}else{
 right.push(arr[i]);
}
}
return sqort(left).concat(pivot,sqort(right));//递归
}
var a=[12,34,23,78,34,26];
console.log(a);
console.log(sqort(a));

참고: 더 작은 배열과 더 큰 배열에 대해 각각 sqort() 함수를 재귀적으로 호출하세요. 더 작은 배열은 기본 배열과 더 큰 배열을 결합하여 최종 정렬 배열을 형성하고 반환됩니다.

관련 권장 사항:

빠른 정렬의 PHP 구현 예

2차원 배열 빠른 정렬 알고리즘의 PHP 구현 예

빠른 정렬 구현 방법

위 내용은 JavaScript는 빠른 정렬 분석을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.