>웹 프론트엔드 >JS 튜토리얼 >두 가지 실용적인 js 정렬 알고리즘 분석

두 가지 실용적인 js 정렬 알고리즘 분석

零到壹度
零到壹度원래의
2018-04-09 14:57:021587검색

이 기사의 내용은 두 가지 실용적인 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 아이디어: 빠른 정렬 아이디어: 먼저 참조점(일반적으로 인덱스 배열의 중간)을 찾은 다음 참조점을 기준으로 배열을 두 부분으로 나누고 참조점 데이터와 비교합니다. 그보다 좋으면 왼쪽에, 그렇지 않으면 오른쪽에 놓으십시오.
비교된 데이터를 저장하려면 왼쪽과 오른쪽에 빈 배열을 사용하세요. 마지막으로 배열 길이가

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의 상위 10대 클래식 알고리즘 정렬

js 정렬 알고리즘 구현(버블, 선택) , 삽입, 두 번째 삽입, 빨리, 희망...

위 내용은 두 가지 실용적인 js 정렬 알고리즘 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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