1.冒泡排序

冒泡排序通常排在第一位,说明它是排序算法的入门算法,是最简单的一个排序算法,而且必须掌握和理解。

先来看看代码吧:

function bubbleSort(arr) {
let temp;
for (let i = 0, len = arr.length; i < len; i++) {
for (let j = 0; j < len - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr;
}

以上做了两层循环,第二层循环是第一个项和第二个项对比,如果第二个大于第一个,就交换他们的位置,那么大的数就在右边。进入下一次循环,第二个和第三个对比,大的移动到右边,以此类推,最大的数会交换到最右边。也就是说第二层循环的目的是找出最大值,冒泡到最右边。

第一层循环目的是要循环arr.length遍,第一遍是找出数组第一大的数,排到最右边,第二遍是找出第二大的(因为已经找出第一大的,所以是j < len - 1 -i), 继续循环找到次大的书,循环arr.length编,就从右向左依次递减,排序完成。

如果是倒序排列,第二层循环方向,每次找出最小值,冒泡到左边。

2.选择排序

function selectionSort(arr) {
let temp;
let minIndex;
for (let i = 0, len = arr.length; i < len - 1; i++) {
minIndex = i;
for (let j = i; j < len; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
return arr;
}

最新文章

  1. 设计模式(六)原型模式(Prototype Pattern)
  2. 利用BI搭建零售业数据信息平台
  3. Android随笔之——Android单元测试
  4. [c++] Smart Pointers
  5. 链队列的C/C++实现
  6. each函数
  7. ASP.NET Web API中的参数绑定总结
  8. Java实战equals()与hashCode()
  9. vim替换命令
  10. GF(2^8)乘法优化
  11. github 预览html
  12. 关于socket的关闭:close和shutdown
  13. Java Design Demo -简单的队列-异步多任务队列(java android)
  14. winform无法查看设计器
  15. 【craps赌博游戏】
  16. 《Django By Example》第九章 中文 翻译 (个人学习,渣翻)
  17. java利用poi来读取execl表格返回对象
  18. PHP 扩展管理
  19. iOS蓝牙开发之iBeacon技术
  20. 浏览器报XMLHttpRequest cannot loadxxxxxx

热门文章

  1. python设置检查点简单实现
  2. harbor自动清理镜像
  3. Taro_Mall 是一款多端开源在线商城小程序.
  4. Canvas 使用及应用
  5. 一步步去阅读koa源码,整体架构分析
  6. 如何提升.NET控制台应用体验?
  7. VUE三 vue-router(路由)详解
  8. 轻量级MVC框架(自行开发)
  9. 简单的猜数字小游戏--Python
  10. 从当当客户端api抓取书评到词云生成