这是我参与8月更文挑战的第九天,活动详情查看:8月更文挑战”前端
到此为止,咱们的数据结构算是基本讲完了,接下来的篇章,想必不用我说,相信你们也猜到了,那很少哔哔,开启咱们的新征程 —— 前端之算法。算法
程序 = 数据结构 + 算法。数组
数据结构为算法提供服务,算法围绕数据结构操做。markdown
排序: 把某个乱序的数组变成升序或者降序的数组。数据结构
搜索:找出数组中某个元素的下标。app
JS中的排序:数组的 sort
方法。oop
JS中的搜索:数组的 indexOf
方法。post
冒泡排序动画
选择排序ui
插入排序
归并排序
快速排序
......
顺序搜索
二分搜索
......
介绍了这么多,也该开始咱们的主题了,下面就让我来叨叨这个冒泡排序。
比较全部相邻的元素,若是第一个比第二个大,则交换它们。
一轮下来,能够保证最后一个数是最大的。
执行 n - 1 轮,就能够完成排序。
Array
的原型链上挂载一个 bubbleSort
方法。Array.prototype.bubbleSort = function () {
console.log(this)
}
const arr = [5, 4, 3, 2, 1]
arr.bubbleSort()
// [ 5, 4, 3, 2, 1 ]
复制代码
这样数组就均可以调用这个方法了。
接下来然咱们具体实现一下这个算法。
Array.prototype.bubbleSort = function () {
for (let i = 0; i < this.length - 1; i++) {
for (let j = 0; j < this.length - 1 - i; j++) {
if (this[j] > this[j + 1]) {
const temp = this[j]
this[j] = this[j + 1]
this[j + 1] = temp
}
}
}
}
const arr = [5, 4, 3, 2, 1]
arr.bubbleSort()
console.log(arr);
// [ 1, 2, 3, 4, 5 ]
复制代码
两个嵌套循环
时间复杂度: O(n^2)
End ~~~