>  기사  >  웹 프론트엔드  >  JavaScript_javascript 기술의 몇 가지 일반적인 알고리즘 요약

JavaScript_javascript 기술의 몇 가지 일반적인 알고리즘 요약

WBOY
WBOY원래의
2016-05-16 15:22:551016검색

다음은 JavaScript의 몇 가지 일반적인 알고리즘에 대한 간략한 목록입니다. 도움이 필요한 친구들은 이를 참조할 수 있습니다. 물론 이러한 알고리즘은 JavaScript뿐만 아니라 다른 언어에도 적용 가능합니다.

1. 선형 검색:

비교적 간단한 입문용 알고리즘

//A为数组,x为要搜索的值
function linearSearch(A, x) {
for (var index = 0; index < A.length; index++) {
if (A[index] == x) {
return index;
}
}
return -1;
}

2. 바이너리 검색:

반쪽 검색이라고도 하며 정렬된 선형 구조에 적합합니다.

//A为已按"升序排列"的数组,x为要查询的元素
//返回目标元素的下标
function binarySearch(A, x) {
var low = 0, high = A.length - 1;
while (low <= high) {
var mid = Math.floor((low + high) / 2); //下取整 
if (x == A[mid]) {
return mid;
}
if (x < A[mid]) {
high = mid - 1;
}
else {
low = mid + 1;
}
}
return -1;
}

3. 버블 정렬:

//冒泡排序
function bubbleSort(A) {
for (var i = 0; i < A.length; i++) {
var sorted = true;
//注意:内循环是倒着来的
for (var j = A.length - 1; j > i; j--) {
if (A[j] < A[j - 1]) {
swap(A, j, j - 1);
sorted = false;
}
}
if (sorted) {
return;
}
}
}

4. 삽입 정렬:

//插入排序
//假定当前元素之前的元素已经排好序,先把自己的位置空出来,
//然后前面比自己大的元素依次向后移,直到空出一个"坑",
//然后把目标元素插入"坑"中
function insertSort(A) {
for (var index= 1; index< A.length; index++) {
var x = A[index];
for (var j = index- 1; j >= 0 && A[j] > x; j--) {
A[j + 1] = A[j];
}
if (A[j + 1] != x) {
A[j + 1] = x;
println(A);
}
}
return A;
}

5. 문자열 반전:

//字符串反转(比如:ABC -> CBA)
function inverse(s) {
var arr = s.split('');
var index= 0, j = arr.length - 1;
while (index< j) {
var t = arr[index];
arr[index] = arr[j];
arr[j] = t;
index++;
j--;
}
return arr.join('');
}

위 내용은 일반적인 JavaScript 알고리즘을 간략하게 소개한 내용입니다. 이 글이 도움이 되기를 바랍니다.

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