活动地址:CSDN21天学习挑战赛 算法专区
目标既定,在学习和实践过程中无论遇到什么困难、曲折都不灰心丧气,不轻易改变自己决定的目标,而努力不懈地去学习和奋斗,如此才会有所成就,而达到自己的目的。(作者:李清照)
…
作为一名前端攻城狮,为了成为更好的自己,我参加了这次21天算法打卡。
这是第9天,2022年08月21日,星期日。今天也要加油!
最近工作忙,工作日期间没有时间研究算法了,只能周末抓紧学习了。
**
【21天打卡】前端攻城狮重学算法之--十大排序算法比较
【21天打卡】前端攻城狮重学算法之-顺序查找
**
1,学习目标
今天掌握学习冒泡排序
2,学习内容
3,学习时间
第9天,2022.08.21 19:00-21:00
4,学习产出
CSDN技术博客 1 篇
**
**
1,学习知识点
冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。
冒泡排序的原理:
每一趟只能确定将一个数归位。即第一趟只能确定将末位上的数归位,第二趟只能将倒数第 2 位上的数归位,依次类推下去。如果有 n 个数进行排序,只需将 n-1 个数归位,也就是要进行 n-1 趟操作。而 “每一趟 ” 都需要从第一位开始进行相邻的两个数的比较,将较大的数放后面,比较完毕之后向后挪一位继续比较下面两个相邻的两个数大小关系,重复此步骤,直到最后一个还没归位的数。
2,学习遇到的问题
冒泡排序是一种用时间换空间的排序方法,最坏情况是把顺序的排列变成逆序,或者把逆序的数列变成顺序。在这种情况下,每一次比较都需要进行交换运算。
3,学习的收获
通过观察下列排序过程,可以发现,两个大小相同的元素在排序过程中会相互靠近,一旦这两个大小相同的元素在排序过程中处于相邻位置,那么后续的排序操作就不会对该元素进行任何相对位置的改变。所以冒泡排序是稳定的。
时间复杂度
空间复杂度
4,实操
输入数据(input):11,34,20,10,12,35,41,32,43,14
javascirpt源码:
- function bubbleSort(arr) {
- var len = arr.length;
- for (var i = 0; i < len - 1; i++) {
- for (var j = 0; j < len - 1 - i; j++) {
- if (arr[j] > arr[j+1]) { // 相邻元素两两对比
- var temp = arr[j+1]; // 元素交换
- arr[j+1] = arr[j];
- arr[j] = temp;
- }
- }
- }
- return arr;
- }
- console.log(bubbleSort([11,34,20,10,12,35,41,32,43,14])); //[10, 11, 12, 14, 20, 32, 34, 35, 41, 43]
输出数据:[10, 11, 12, 14, 20, 32, 34, 35, 41, 43]
…
今天就学习到这里,下次再见!~