今天我们简单讲解一下冒泡排序和选择排序的实现。

首先我们需要清楚冒泡排序和选择排序是什么?

排序顾名思义就是把一个乱序的数组,通过我们的处理,让它变成一个有序的数组。

我们先来看一下冒泡排序:

冒泡排序的逻辑:

  • 先遍历数组,让挨着的两个进行比较,如果前一个比后一个大(如果前一个比后一个小,也一样,只不过一个是实现从小到大排序,一个是实现从大到小排序),那么就把两个互换位置。
  • 数组遍历一遍之后,那么最后一个数字就是最大的那个
  • 然后再进行遍历,按照之前的规则,我们知道第二大的数字就会跑到倒数第二的位置。
  • 以此类推,最后就会按照顺序把数组排列好了。(仔细思考,我们会发现在后面进行排时,前面已经排好的数字已经不需要再进行比较了)

下来我们开始编写代码:

1.我们先准备一个乱序的数组

2.接下来,我们需要知道两个数怎么互换位置

假设我们现在需要数组的第一位和第二位互换位置,我们需要借助一个中间变量,代码如下:

3.我们的准备工作已经做好了,接下来开始第一次遍历数组

遍历完毕:因为要进行 i + 1 的操作,所以结束条件写成了 i < arr.length - 1

4.接下来我们按照数组的长度进行遍历

这里我们需要注意的是,当我们把数组的数字排列好的只剩一个数字是,那么那个数字就不需要在进行排序,它就是最大的或着最小的。所以我们的外层for循环的结束条件是 j < arr.length - 。

我还需要注意的是,当我们第一次循环了之后,已经把最大的数字排列在最后面,而第二次之后把第二大的数字排列在倒数第二的位置,这样我们再进行排序的时候发现,未排序的数字和排序好的数字就不要再进行比较了,因为即使比较了也不会互换位置,所以我们这里的内部for循环的结束条件就是 i < arr.length - 1 - j。至此一个冒泡排序就结束了,大家快去试一试。

我们再来看一下选择排序:

  • 选择排序的逻辑:
  • 先假定数组中的第0个就是最小的数字的索引
  • 然后遍历数组,只要有一个比我小的数字,那么就替换之间记录的索引
  • 遍历数组结束之后就可以找到最小的数的索引,然后将最小的数换到第0个的位置
  • 再来一遍遍历,因为第一个位置已经排列好,就假定第二个位置是最小的数,再来一遍找到第二小的数的索引,然后换位置
  • 以此类推,就把数组排列好了

1.同样的我们先准备一个乱序的数组

2.假定数组中的第0个(也就是第一个)是最小数,索引就是0

3.遍历数组,判断,只要数字比我小就将其索引赋值给minIndex,遍历完毕后再互换两个数位置

4.同样的按照数组的长度重复执行上面的代码

同样的道理,现在数组的长度是9,我们排列玩8个数字之后,最后一个数就不需要再进行过排序了,所以外层for循环的结束条件是 j < arr.length - 1。我们发现,我们排列第一个数字的时候是假定第一个数字最小索引是0,排列第二个数字的时候,是假定第二个数最小,索引是1,都是和下一个数字比较,所以我们将代码进行了优化如: minIndex = j ,var i = j + 1 , arr[minIndex] = arr[j] , arr[j] = temp 至此一个选择排序就完成了,如下图

大家可以试试用两个排序实现从大到小的排序效果!!!

Js的冒泡排序和选择排序相关推荐

  1. js实现冒泡排序,快速排序,选择排序

    用js冒泡排序,快速排序,选择排序 1.冒泡排序 冒泡排序是比较经典的排序方法,是一种用时间换空间的排序方法.我总结了一下它的特点:(1)它的时间复杂度是:(2)每一趟相邻元素两两比较完毕就会产生最值 ...

  2. JS 排序算法详解(冒泡排序,选择排序,插入排序,希尔排序,快速排序)

    JS 排序算法详解(冒泡排序,选择排序,插入排序,希尔排序,快速排序) 一. 大O表示法 在进行排序算法之前,我们得先掌握一种对算法效率的表示方法,大O表示法. 我们使用大O表示法来表示算法的时间复杂 ...

  3. 算法与数据结构(冒泡排序,选择排序和插入排序的总结)

    冒泡排序,选择排序和插入排序的总结 在规模较小时,或者元素的有序性较高时,插入排序的时间复杂度可以接近 O(n) ,是上述三种排序里表现最好的 一.通过表格我们可以发现,冒泡排序的时间复杂度是要优于选 ...

  4. JavaSE(二十四)——冒泡排序、选择排序、直接插入排序以及二分查找

    文章目录 1. 冒泡排序 2. 选择排序 3. 直接插入排序 4. 二分查找 1. 冒泡排序 原理:数组元素两两比较,大的往后放,经过一轮比较后,最大元素在最后面,如此往复. 举例说明: 代码: // ...

  5. 冒泡排序、选择排序和插入

    冒泡排序.选择排序和插入排序代码如下: package cn.luxh.app.test;public class SimpleSortUtil {/*** 冒泡排序* 从小到大排序* 思路:* 1) ...

  6. C语言排序(桶排序,冒泡排序,选择排序,插入排序,快速排序)

    参考:C语言五大排序(桶排序,冒泡排序,选择排序,插入排序,快速排序)动态演示 作者:一只青木呀 发布时间: 2020-09-09 20:18:43 网址:https://blog.csdn.net/ ...

  7. 掌握常见的内部排序方法(插入排序,冒泡排序,选择排序,快速排序,堆排序,希尔排序,归并排序,基数排序等)...

    掌握常见的内部排序方法(插入排序,冒泡排序,选择排序,快速排序,堆排序,希尔排序,归并排序,基数排序等). 数组高级以及Arrays(掌握) 排序方法 空间复杂度 时间复杂度 稳定性 插 入 排 序 ...

  8. 冒泡排序和选择排序区别_你以为只是简单的排序?(一)

    一直在犹豫要不要写排序的文章,因为真的烂大街了.可是一旦细看,还真是很多值的思考的地方,所以还是选择记录一下 以下完整代码,均可从这里获取 https://github.com/Rain-Life/d ...

  9. Python排序算法(一)冒泡排序、选择排序、插入排序

    今天总结一下Python中的排序算法.这篇文章有的排序算法是:冒泡排序.选择排序.插入排序. 冒泡排序 先看一下代码. ''' 冒泡排序 '''def bubble_sort(aList):n = l ...

最新文章

  1. android 开机启动服务。
  2. NSString,最美的创建方式也最毒
  3. 代码质量管控的四个阶段
  4. iptables记录日志
  5. Byshell:无进程无DLL无硬盘文件无启动项
  6. HTTP 和 SOCKS 代理有什么区别,指纹浏览器搭配哪种代理合适
  7. ubuntu linux拼音输入法,Ubuntu 中文拼音输入法小结
  8. 求x的n次方编程_c语言求x的n次方的函数介绍
  9. 使用Python发送邮件(图片、表格、附件) 系列二: 同时发送图片和附件实际案例
  10. python tkinter ttk的使用(下)
  11. 火狐浏览器打开IE窗口/IE跳谷歌页面等 --- 自定义协议---手动执行注册表
  12. artDialog对话框组件使用方法
  13. 轮播图展示与轮播图管理
  14. 【详细】小程序发微博功能实现
  15. 赵小楼《天道》《遥远的救世主》深度解析(110)不神之神是谓真神
  16. AntDB基于WAL日志的DML数据闪回实现
  17. 清华大学视频:ARM微控制器与嵌入式系统
  18. css selector什么意思
  19. 玩cf出现outofmemory_穿越火线出现out,穿越火线outofmemory
  20. Win10激活Office2013的技巧

热门文章

  1. 【Python】搭建虚拟环境
  2. P2628 冒险岛 AC于2018.10.31
  3. 电子沙盘虚拟数字沙盘培训教程第3课
  4. [51nod1455]宝石猎人——DP
  5. mkv格式不能导入到pr?教你mkv格式转换成avi的方法
  6. 抖音涨粉变现最快的账号的一致性和美观性设计-阿甘电商
  7. 马上端午节,会放假吗
  8. 晋升为 Leader 3个月不到,被下属们赶下台了!
  9. Python开发爬虫完整代码解析
  10. “UC第一”惹了谁?