前端了解的一些算法 JS实现

作为一个前端新手,我觉得还是要懂一些算法,所以参考了别的大神的文章,稍微总结了几个比较常用的算法。

排序算法:

简单排序:

1)冒泡排序

    冒泡排序分为三个主要步骤:

    一、比较相临两个数,若前一个比后一个大,就调换位置

    二、第一轮过后,最右边的是最大的数了,不用加入下一轮比较

    三、重复步骤一

function blue( elements){
for( var i= 0; i< elements. length; i++){
for( var j= 0; j< elements. length- i- 1; j++){
if ( elements[ j]> elements[ j+ 1]) {
var temp= elements[ j];
elements[ j]= elements[ j+ 1];
elements[ j+ 1]= temp;
}
}
}
}
var elements=[ 5, 5, 6, 9, 10, 52, 6, 9, 8, 47];
console. log( '冒泡前'+ elements);
blue( elements);
console. log( '冒泡后'+ elements);

2)选择排序

    快速排序的含义:先找到最大(最小)的数,放在序列起始位置,然后继续找剩下的数中最大(最小)的数,依次放在序列中

    以此类推,直到数都循环完毕

function quick( elements){
var minindex, temp;
for ( var i = 0; i < elements. length- 1; i++) {
minindex= i;
for ( var j = i+ 1; j < elements. length; j++) {
if ( elements[ j]< elements[ minindex]) {
minindex= j;
}
}
temp= elements[ i];
elements[ i]= elements[ minindex];
elements[ minindex]= temp;
}
return elements;
}
var elements=[ 3, 6, 9, 88, 45, 65, 1, 2, 65, 45, 11, 22];
console. log( quick( elements));

3)插入排序

    1)第一个元素默认已经排序

    2)取下一个元素,从序列中部向后开始比较,若元素大于已排序元素,则向后移到下一位置作比较

    3)直至找到一个位置,已排序元素小于等于新元素,将元素插入到下一位置中

    4)重复步骤2


高级排序:

1)希尔排序

2)归并排序

3)快速排序


查找算法:

1)顺序查找

    遍历整个数组,如果与查找值相同就返回true

function shunxusearch( arr, val){
for ( let index = 0; index < arr. length; index++) {
if ( arr[ index]== val) {
return true;
}
}
return false;
}
var arr=[ 22, 55, 66, 9, 8, 7, 4, 11, 2, 6];
console. log( shunxusearch( arr, 666));

2)二分查找

    一、先找到中间值,通过与中间值比较,小的放左边,大的放右边

    二、再在两边取中间值,小的放左边,大的放右边

    三、以此类推

分为递归与非递归

var arr=[ 1, 22, 33, 45, 55, 66, 78, 89, 97];
//递归
function binary1( arr, low, high, data){
var mid= parseInt(( high+ low)/ 2);
if( arr[ mid]== data){
return mid;
} else if( arr[ mid]> data){
high= mid- 1;
return binary1( arr, low, high, data);
} else if( data> arr[ mid]){
low= mid+ 1;
return binary1( arr, low, high, data);
}
}
console. log( binary1( arr, 0, 8, 45));
//非递归
function binary2( arr, data){
var low= 0, high= arr. length- 1;
while( low<= high){
var mid= parseInt(( high+ low)/ 2);
if ( arr[ mid]== data) {
return mid;
} else if( data> arr[ mid]){
low= mid+ 1;
} else if( data< arr[ mid]){
high= mid- 1;
}
else{
return - 1;
}
}
}
console. log( binary2( arr, 45));

高级算法:

1)动态规划

2)贪心算法

猜你喜欢

转载自blog.csdn.net/qq_36802917/article/details/81001622
今日推荐