作为一个前端新手,我觉得还是要懂一些算法,所以参考了别的大神的文章,稍微总结了几个比较常用的算法。
排序算法:
简单排序:
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)贪心算法