正文
.
length
;
i
l
-
1
;
i
++
)
{
for
(
let
j
=
i
+
1
;
j
l
;
j
++
)
{
if
(
arr
[
i
]
>
arr
[
j
])
{
let
tem
=
arr
[
i
];
arr
[
i
]
=
arr
[
j
];
arr
[
j
]
=
tem
;
}
}
}
return
arr
;
}
module
.
exports
=
bubbleSort
;
除了冒泡排序外,其实还有很多诸如 插入排序,快速排序,希尔排序等。每一种排序算法都有各自的特点。全部掌握也不需要,但是心底一定要熟悉几种算法。 比如快速排序,其效率很高,而其基本原理如图(来自wiki):
算法参考某个元素值,将小于它的值,放到左数组中,大于它的值的元素就放到右数组中,然后递归进行上一次左右数组的操作,返回合并的数组就是已经排好顺序的数组了。
function
quickSort
(
arr
)
{
if
(
arr
.
length
1
)
{
return
arr
;
}
let
leftArr
=
[];
let
rightArr
=
[];
let
q
=
arr
[
0
];
for
(
let
i
=
1
,
l
=
arr
.
length
;
i
l
;
i
++
)
{
if
(
arr
[
i
]
>
q
)
{
rightArr
.
push
(
arr
[
i
]);
}
else
{
leftArr
.
push
(
arr
[
i
]);
}
}
return
[].
concat
(
quickSort
(
leftArr
),[
q
],
quickSort
(
rightArr
));
}
module
.
exports
=
quickSort
;
安利大家一个学习的地址,通过动画演示算法的实现。
HTML5 Canvas Demo: Sorting Algorithms(http://math.hws.edu/eck/jsdemo/sortlab.html)
Q5 不借助临时变量,进行两个整数的交换
输入 a = 2, b = 4 输出 a = 4, b =2
这种问题非常巧妙,需要大家跳出惯有的思维,利用 a , b进行置换。
主要是利用 + – 去进行运算,类似 a = a + ( b – a) 实际上等同于最后 的 a = b;
function
swap
(
a
,
b
)
{
b
=
b
-
a
;
a
=
a
+
b
;
b
=
a
-
b
;
return
[
a
,
b
];
}
module
.
exports
=
swap
;
Q6 使用canvas 绘制一个有限度的斐波那契数列的曲线?
数列长度限定在9.
斐波那契数列,又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列主要考察递归的调用。我们一般都知道定义
fibo[i] = fibo[i-1]+fibo[i-2];
生成斐波那契数组的方法
function
getFibonacci
(
n
)
{
var
fibarr
=
[];
var
i
=
0
;
while
(
i
n
)
{
if
(
i
1
)