一、图解排序过程



二、代码实现

三、完整代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><script>// 创建列表类function ArrayList() {// 属性this.array = []// 方法// 将数据可以插入到数组中的方法ArrayList.prototype.insert = function (item) {this.array.push(item)}ArrayList.prototype.toString = function () {return this.array.join('-')}// 交换两个位置的数据ArrayList.prototype.swap = function (m, n) {var temp = this.array[m]this.array[m] = this.array[n]this.array[n] = temp}// 实现排序算法// 冒泡排序ArrayList.prototype.bubbleSort = function () {// 1.获取数组的长度var length = this.array.length// 2.反向循环,因此次数越来越少for (var j = length - 1; j >= 0; j--) {// 第一次进来:  i = 0, 比较 0 和 1 位置的两个数据,如果0位置大于 1位置的数据 交换两个的位置// 最后一次进来:i = length - 2, 比较length - 2 和 length - 1 的两个数据// 3.根据i的次数,比较到i的位置for (var i = 0; i < j; i++) {if (this.array[i] > this.array[i + 1]) {// 4.如果 i 位置比 i+1 位置的数据大,就交换位置// 前一个数字 > 后一个数字, 两者交换位置this.swap(i, i + 1)}}}}// 选择排序ArrayList.prototype.selectionSort = function () {// 1.获取数组的长度let length = this.array.length// 2.外层循环:从0位置开始取数据for (let j = 0; j < length - 1; j++) {// 内层循环,从i+1位置开始,和后面的数据进行比较let min = j // 最小值的下标for (let i = min + 1; i < length; i++) {if (this.array[min] > this.array[i]) {// 如果当前下标保存的最小值 > 当前遍历的项,// 说明当前遍历项才是最小的值,那么保存当前遍历项的下标min = i}}this.swap(min, j)}}// 插入排序ArrayList.prototype.insertionSort = function () {// 1.获取数组的长度let length = this.array.length// 2.外层循环:从第1个位置开始获取数据,向前面局部有序的部分进行插入for (let i = 1; i < length; i++) {// 3.内层循环:获取i位置的数字,和前面的数字依次进行比较,let temp = this.array[i]let j = i// 只要temp前面的数字比temp大并且temp前面的数字的下标>0// (因为就j=0的话进入循环,j--后下标变成了-1,所以要满足j>0才能进入循环),// 就把temp前面的数字往后移动1位while (this.array[j - 1] > temp && j > 0) {this.array[j] = this.array[j - 1] // 把大的数字往后挪j--}// 4.把比较的数据temp放到j位置this.array[j] = temp}}// 希尔排序// 快速排序}// 测试var list = new ArrayList()// 插入元素list.insert(66)list.insert(88)list.insert(12)list.insert(87)list.insert(100)list.insert(5)list.insert(566)list.insert(23)alert(list)// 验证冒泡排序// list.bubbleSort()// list.selectionSort()list.insertionSort()alert(list)
</script>
</body>
</html>

JS数据结构与算法——插入排序相关推荐

  1. JS数据结构与算法 笔记

    JS数据结构与算法笔记 前言:不定时更新说明 1. 栈(Stack) 1.1 基于数组实现栈 1.2 基于对象实现栈 1.3 基于链表实现栈 1.4 栈的简单应用 1.4.1 字符串中的括号匹配问题 ...

  2. JS数据结构与算法_链表

    上一篇:JS数据结构与算法_栈&队列 下一篇:JS数据结构与算法_集合&字典 写在前面 说明:JS数据结构与算法 系列文章的代码和示例均可在此找到 上一篇博客发布以后,仅几天的时间竟然 ...

  3. Java数据结构与算法——插入排序

    声明:码字不易,转载请注明出处,欢迎文章下方讨论交流. 前言:Java数据结构与算法专题会不定时更新,欢迎各位读者监督.本篇文章介绍排序算法中插入排序算法,包括插入排序的思路,适用场景,性能分析,ja ...

  4. es6 数组排序_重读《学习JS数据结构与算法-第三版》- 第3章 数组 二

    定场诗 守法朝朝忧闷,强梁夜夜欢歌:损人利己骑马骡,正值公平挨饿:修桥补路瞎眼,杀人放火儿多:我到西天问我佛,佛说:我也没辙! 前言 读<学习JavaScript数据结构与算法>- 第3章 ...

  5. js数据结构和算法(8)-图

    8-图(第11章) 8.1 图的定义 图是一种非线性结构,由一系列顶点及其连接顶点的边组成.比如A和B.A和D是相邻的,而A和E不是相邻的.一个顶点相邻顶点的数量叫作度,比如A的度为3.D的度为4.路 ...

  6. JS数据结构与算法——选择排序(把小的数字依次往前放)

    一.图解排序过程 注意:选择排序一样是需要进行两两的比较,但比较过程中不进行交换,只有比较完成后,找到最小的那个数,才会进行交换,把它放到最前面. 二.代码实现 三.完整代码 <!DOCTYPE ...

  7. JS数据结构与算法——冒泡排序(把大的数字依次往后放)

    一.图解排序过程 注意:比较次数和交换次数之所以不一致,是因为:比较了并不一定就需要交换两个数字的位置,比如比较 1 和 2两个数字,由于 后者本身就比前者大,所以不需要交换两者的位置. 二.代码实现 ...

  8. 【JS数据结构与算法】认识哈希表

    目录 一.什么是哈希表? 二.哈希表的优势. 三.哈希表与数组相比较. 四.数据的存储. 方法一:ASCII编码之和 方法二:幂的连乘 五.方法二改进--哈希化 六.解决冲突 一:链地址法(拉链法). ...

  9. js数据结构与算法 图的BFS和DFS

    本文为技术学习的笔记-<Learning JavaScript Data Structures and Algorithms, Third Edition> 1.图的相关术语 图是网络结构 ...

最新文章

  1. 彻底理解JAVA动态代理
  2. MySQL之条件表达式
  3. Lombok常用注解和功能
  4. mysql linux_linux下mysql下载安装
  5. 使用js简单实现javaMap
  6. LeetCode-236: 二叉树的最近公共祖先
  7. 2012-2-24 《数据结构》读书笔记2 线性表
  8. python 窗口键 键位码_Python制作AI贪吃蛇,很多很多细节、思路都写下来了
  9. ubuntu apt 卸载 golang
  10. excel下拉列表多选框_将列表框添加到Excel工作表
  11. python复制excel图片_python批量导出excel区域图片
  12. 杂谈-苹果账号调查事件始末,Apple审核流程或有变
  13. aruba交换机配置命令_ArubaOS交换机日常配置指导
  14. C# winform 快速导入excel 到datagridview
  15. 中兴B860AV2.1B电视盒子刷机固件
  16. mac 删除系统应用
  17. 图像暗角阴影去除算法
  18. 电脑无线如何启用dhcp服务器,win7系统使用无线连接遇到DHCP未启用报错如何解决...
  19. 有史以来最牛逼的一张程序员职业路线图,分享给你
  20. 二.Laravel5.6教程之——Laravel Debugbar扩展

热门文章

  1. Centos7更新 SQLite3至版本3.29.0
  2. android自定义金额输入键盘_Android 自定义控件 - 仿支付宝数字键盘
  3. 猿辅导python面试_猿辅导面试经历—个人感受
  4. 您的apple id 暂时不符合使用此应用程序_Mac相机不工作时该怎么办
  5. 【Python基础入门系列】第01天:环境搭建
  6. 【R】语言第一课-----安装
  7. Django模型关系
  8. 融云通讯服务器,vue使用融云即时通讯,老是报了发送失败,服务器超时
  9. DLL导出类和导出函数
  10. 服务器系统server 2008,windows server 2008 R2 操作系统