>웹 프론트엔드 >JS 튜토리얼 >Js 빠른 정렬 방법 예

Js 빠른 정렬 방법 예

小云云
小云云원래의
2018-02-26 13:55:092304검색


퀵 정렬은 크게 세 부분으로 나누어집니다. 1. 피벗(pivot) 선택 2. 피벗 값보다 작은 요소는 모두 피벗 앞에 배치되고, 피벗 값보다 큰 요소는 모두 피벗 뒤에 배치됩니다. 피벗(동일한 숫자는 양쪽으로 갈 수 있음). 이 파티션이 종료된 후 베이스는 시퀀스의 중간에 있습니다. 3. 기본 값보다 작은 요소의 하위 배열과 기본 값보다 큰 요소의 하위 배열을 재귀적으로 정렬하는 경우는 배열의 크기가 0 또는 1인 경우입니다. , 항상 정렬되어 있다는 것뿐입니다. 계속 반복되지만 이 알고리즘은 항상 종료됩니다. 왜냐하면 각 반복에서 최소한 하나의 요소를 최종 위치로 이동하기 때문입니다.

function quickSort(arr) {   
if (arr.length <= 1) { return arr } console.log("原数组是:" + arr)   
var pivotIndex = Math.floor(arr.length / 2)   
var pivot = arr.splice(pivotIndex, 1)[0]  
var left = []   
var right = []
 console.log("将中介提取出来后数组是:" + arr)   
for (var i = 0 ; i < arr.length ; i++){ 
console.log("此刻中介是:" + pivot + "当前元素是:" + arr[i])    
 if (arr[i] < pivot) {      
 left.push(arr[i]) console.log("移动" + arr[i] + "到左边")    
 } else {      
 right.push(arr[i]) console.log("移动" + arr[i] + "到右边")    
 }  
 }  
return quickSort(left).concat([pivot], quickSort(right)) } 
var nums = [2,3,4,3,1,5,7,122,341,-1] 
console.log(quickSort(nums))

두 번째 방법:

function quickSort(arr) {   
if (arr.length <= 1) { return arr } console.log("原数组是:" + arr)   
var pivotIndex = Math.floor(arr.length / 2)   
var pivot = arr.splice(pivotIndex, 1)[0]  
var left = []   
var right = []
 console.log("将中介提取出来后数组是:" + arr)   
for (var i = 0 ; i < arr.length ; i++){ 
console.log("此刻中介是:" + pivot + "当前元素是:" + arr[i])    
 if (arr[i] < pivot) {      
 left.push(arr[i]) console.log("移动" + arr[i] + "到左边")    
 } else {      
 right.push(arr[i]) console.log("移动" + arr[i] + "到右边")    
 }  
 }  
return quickSort(left).concat([pivot], quickSort(right)) } 
var nums = [2,3,4,3,1,5,7,122,341,-1] 
console.log(quickSort(nums))

관련 권장 사항:

빠른 정렬 분석을 구현하는 JavaScript

빠른 정렬을 구현하는 PHP 방법의 예

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

위 내용은 Js 빠른 정렬 방법 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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