새로운 기술은 끊임없이 변화하고 있으며 일부 재단을 마스터하는 것은 미래의 학습과 지속적으로 업데이트를위한 견고한 토대입니다. 나는 최근에 할 일이 없다. 이전에 배운 데이터 구조를 검토하기 위해 JS의 데이터 구조에서 정렬 알고리즘을 구현 하고이 기사의 끝에 임베디드 데모를 구현했습니다.
간단한 정렬
버블 정렬
버블 분류는 가장 간단한 정렬 알고리즘이며, 시간의 제곱은 n이며 코드는 다음과 같습니다.
function bubblesort (array) {for (var i = 0; i <array.length; i ++) {for (var j = array.length; j> 0; j-) {if (array [j] <array [j -1]) {var temp = array [j -1]; 배열 [j -1] = 배열 [j]; 배열 [j] = 온도; }} /* 출력 결과* /docut직접 삽입 정렬
직접 삽입 분류는 간단한 정렬 알고리즘이며 시간 복잡성도 N에 의해 제곱되지만 성능은 버블 분류보다 약간 낫습니다. 코드는 다음과 같습니다.
함수 insertsort (배열) {var temp; for (var i = 1; i <array.length; i ++) {var temp = array [i]; for (var j = i; j> 0 && temp <배열 [j -1]; j-) {array [j] = 배열 [j -1]; } array [j] = temp /* 출력 결과* /document.write ( "th? + i +"패스 순서 순서의 결과는 다음과 같습니다.정렬을 선택하십시오
선택 분류는 또한 N 제곱의 시간 복잡성을 가진 간단한 정렬 알고리즘이며, 성능은 버블 분류보다 약간 낫습니다. 코드는 다음과 같습니다.
함수 selectSort (배열) {varmin, temp; ; for (var i = 0; i <array.length; i ++) {min = i; for (var j = i+1; } if (min! = i) {temp = 배열 [i]; 배열 [i] = 배열 [min]; 배열 [min] = 온도; } /* 출력 결과* /docut복잡한 분류
언덕 정렬
힐 분류는 삽입 분류의 업그레이드입니다. 1959 년, Hill은 스텝 리프 점프 비교를 설정하기 위해 간단한 분류에서 쌍별 비교를 변경하여 N Square의 시간 복잡성을 깨뜨 렸습니다. 언덕 분류는 스텝 크기의 다른 시간 복잡성에 따라 가장 좋은 nlogn에서 최악의 n 정사각형으로 이동합니다. 코드는 다음과 같습니다.
함수 ShallSort (Array) {var excrement = array.length; var i var 온도; // 저장 var count = 0; do {ycrement = math.floor (iccrement / 3) + 1; for (i = ycrement; i <array.length; i ++) {if (array [i] <array [i -xcrement]) {temp = array [i]; for (var j = i -icrement; j> 0 && temp <array [j]; j - = ycrement) {array [j + excrement] = array [j]; } 배열 [j + 증분] = 온도; /* 출력 결과*/ count ++; document.write ( "<br />+ count+"패스 순서 순서의 결과는 다음과 같습니다. ") for (var n = 0; n <array.length; n ++) {document.write (array [n]+", ");} /* 출력 결과는* /}}} while (ycrement> 1)}힙 정렬
힙 정렬은 선택 정렬을위한 업그레이드입니다. 큰 상단 힙 또는 작은 상단 힙을 지속적으로 구축하여 가장 크거나 작은 값을 선택하고 정렬을 위해 대기열의 프론트 엔드에 넣습니다. 힙 분류의 시간 복잡성은 Nlogn이며 코드는 다음과 같습니다.
기능 heapsort (배열) {var temp; var i; for (i = math.floor (array.length / 2); i> = 0; i-) {HeaPadjust (Array, I, Array.Length-1); // (i = array.length-1; i> = 0; i--)의 대형 상단 힙으로 배열을 빌드하십시오. {/*루트 노드를 바꾸십시오*/temp = array [i]; 배열 [i] = 배열 [0]; 배열 [0] = 온도; /*나머지 배열은 큰 상단 힙에 계속 내장되어 있습니다*/ HeaPadjust (Array, 0, I -1); /* 출력 결과*/docut 배열의 첨자 // MAX는 배열 기능 HeapAdjust (Array, Start, Max)의 최종 첨자입니다. {var temp, j; temp는 (j = 2 * start; if (temp> = 배열) [j];정렬을 병합하십시오
병합 분류는 복잡한 정렬에서 유일한 안정적인 정렬입니다. 분할하여 정렬 한 다음 배열을 정렬합니다. 병합 분류 시간의 복잡성의 제곱은 n입니다. 코드는 다음과 같습니다.
// 소스 소스 배열 // dest target array // s Start Swermcript // t 대상 첨자 기능 msort (source, dest, s, t) {var m; // 중간 값을 선택 var var dest2 = new array (); if (s == t) {dest [s] = source [s]; } else {m = math.floor ((s + t) / 2); msort (소스, dest2, m+1, t); 병합 (dest2, dest, s, m, t); /* 출력 결과*/docut 첨자 // S. (s <= m) {for (var l = 0; l <= m -s; l ++) {dest [k+l]}} if (j <= n) {(var l = 0; l <= n -j; l ++);빠른 정렬
빠른 정렬은 Nlogn의 시간 복잡성을 가진 가장 빠른 알려진 정렬이며 코드는 다음과 같습니다.
var count = 0; 함수 QuickSort (배열, 낮음, 높음) {var temp; if (low <high) {var kyypoint = quicksorthelp (배열, 낮음, 높음); 카운트 ++; document.write ( "<br /> 터미널? + count +"순서 순서 순서의 결과는? : ") for (var l = 0; l <array.length; l ++) {docum while (while) {while <high && array [high-} array [low]; 배열 [High];데이터 구조에서 다양한 정렬 방법 (JS 구현)의 위의 요약은 내가 공유하는 모든 컨텐츠입니다. 나는 당신이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.