이 기사의 내용은 두 가지 실용적인 js 정렬 알고리즘에 대한 분석을 공유하는 것입니다. 이는 특정 참조 값을 가지고 있습니다. 도움이 필요한 친구는 이를 참조할 수 있습니다.
Zero: 배열 arr=[2,5가 지정된 경우 ,4,1,7,3,8,6,9,0];
1: 가짜 정렬
1 아이디어: 버블 정렬 아이디어: 인접한 두 데이터의 크기를 매번 비교하여 작은 데이터가 순위를 매김 먼저 앞 데이터가 뒤 데이터보다 크면 두 숫자의 위치를 바꿉니다.
위 규칙을 구현하려면 두 개의 for 루프 레이어를 사용해야 합니다. 외부 레이어는 첫 번째 숫자에서 두 번째 숫자로 이동합니다. 마지막 번호부터 내부 레이어가 시작됩니다. 레이어의 마지막 번호부터 마지막 번호까지
2 특징: 정렬 알고리즘의 기초입니다. 간단하고 실용적이며 이해하기 쉽다는 단점은 비교가 많이 필요하고 효율성이 떨어진다는 것입니다.
3 구현:
var times=0; var bubbleSort=function(arr){ for(var i=0;i<arr.length-1;i++){ for(var j=i+1;j<arr.length;j++){ if(arr[i]>arr[j]){//如果前面的数据比后面的大就交换 var temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } console.log("第"+(++times)+"次排序后:"+arr); } } return arr; } console.log("The result is:"+bubbleSort(arr));
4 효율성: 배열 길이 10, 정렬 횟수 45회.
두 가지: 빠른 정렬
1 아이디어: 빠른 정렬 아이디어: 먼저 참조점(일반적으로 인덱스 배열의 중간)을 찾은 다음 참조점을 기준으로 배열을 두 부분으로 나누고 참조점 데이터와 비교합니다. 그보다 좋으면 왼쪽에, 그렇지 않으면 오른쪽에 놓으십시오.
비교된 데이터를 저장하려면 왼쪽과 오른쪽에 빈 배열을 사용하세요. 마지막으로 배열 길이가 <= 1;
2이 될 때까지 위 작업을 재귀적으로 수행합니다. 특징: 빠르고 일반적으로 사용됩니다. 단점은 두 개의 추가 배열을 선언해야 하므로 메모리 공간 리소스가 낭비된다는 것입니다.
3 구현:
var times=0; var quickSort=function(arr){ //如果数组长度小于等于1无需判断直接返回即可 if(arr.length<=1){ return arr; } var midIndex=Math.floor(arr.length/2);//取基准点 var midIndexVal=arr.splice(midIndex,1);//取基准点的值,splice(index,1)函数可以返回数组中被删除的那个数arr[index+1] var left=[];//存放比基准点小的数组 var right=[];//存放比基准点大的数组 //遍历数组,进行判断分配 for(var i=0;i<arr.length;i++){ if(arr[i]<midIndexVal){ left.push(arr[i]);//比基准点小的放在左边数组 } else{ right.push(arr[i]);//比基准点大的放在右边数组 } console.log("第"+(++times)+"次排序后:"+arr); } //递归执行以上操作,对左右两个数组进行操作,直到数组长度为<=1; return quickSort(left).concat(midIndexVal,quickSort(right)); }; console.log(quickSort(arr));
4 효율성: 배열 길이 10, 정렬 횟수 22회.
세 가지: 요약
두 가지 방법 모두 장점과 단점이 있지만 프로그래머로서 이 두 가지 방법을 마스터해야 합니다. 하나는 가장 기본적이고 다른 하나는 가장 일반적으로 사용되기 때문입니다. 인터뷰에서든 일상에서든.
관련 권장사항:
js 정렬 알고리즘 구현(버블, 선택) , 삽입, 두 번째 삽입, 빨리, 희망...
위 내용은 두 가지 실용적인 js 정렬 알고리즘 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!