一、图解排序过程



注意:选择排序一样是需要进行两两的比较,但比较过程中不进行交换,只有比较完成后,找到最小的那个数,才会进行交换,把它放到最前面。

二、代码实现

三、完整代码

<!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)}}// 插入排序// 希尔排序// 快速排序}// 测试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()alert(list)
</script>
</body>
</html>

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

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

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

  2. 【2】数据结构与算法 —— 选择排序算法

    选择排序分为简单选择排序和堆排序,下面看看两个算法直接的对比. 1.简单选择排序 简单选择排序法就是通过n-i此关键字间的比较,从n-i-1个记录中选出关键字最小的记录,并且和第i个记录交换.实现如下 ...

  3. 数据结构与算法——选择排序

    //选择排序 #include<stdio.h> void SelectSort(int arr[],int len); int main(void) { int i; int arr[9 ...

  4. Python 数据结构与算法——选择排序(迭代版、递归版)

    我们首先找到其中最大的元素,并将其放在 n<script id="MathJax-Element-11" type="math/tex">n< ...

  5. 数据结构与就算法(选择排序)

    数据结构与就算法(选择排序) 数据!您好 2019-01-07 05:16:18 2736 收藏 17 版权 1>什么是选择排序,选择排序和插入排序的思想差不多,也分已排序区间和未排序区间,只是 ...

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

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

  7. 在Object-C中学习数据结构与算法之排序算法

    笔者在学习数据结构与算法时,尝试着将排序算法以动画的形式呈现出来更加方便理解记忆,本文配合Demo 在Object-C中学习数据结构与算法之排序算法阅读更佳. 目录 选择排序 冒泡排序 插入排序 快速 ...

  8. 数据结构排序算法实验报告_[数据结构与算法系列]排序算法(二)

    我的上一篇文章向大家介绍了排序算法中的冒泡排序.插入排序和选择排序.它们都是平均时间复杂度为 O(n^2) 的排序算法,同时还为大家讲解了什么是原地排序和什么是排序的稳定性.下图是这三种算法的比较,不 ...

  9. C语言排序算法 选择排序 插入排序 快速排序 qsort实现快排 堆排序

    常见排序算法 选择排序 选择排序(Selection sort)是一种简单直观的排序算法. 它的工作原理如下. 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素 ...

最新文章

  1. 通过shell将*.txt文本内容批量录入mysql
  2. ZJU-java进阶笔记 第三周(对象容器)
  3. 解决SqlServer2008修改表后保存时出现“save changes is not permitted…”问题
  4. 面试的算法2(C语言)(整理)
  5. android HOME键的监听
  6. crontab linux
  7. 消息队列mysql redis那个好_Redis作为消息队列与RabbitMQ的比较
  8. 使用ABAP事务码STAD分析Asynchronous RFC call性能
  9. this表示当前对象简单实例
  10. http请求 url 竖线_http.createServer创建http服务
  11. python 对比文件内容差异_使用Python来比较文件夹并提取差异部分
  12. ps图层组快捷键 一次打开或关闭所有的顶级图层组
  13. 2020华为软挑总结
  14. 金蝶k3服务器系统吗,金蝶k3能在云服务器上吗
  15. Spring Boot实战分页查询附近的人: Redis+GeoHash+Lua
  16. 用python中的turtle库画蜡笔小新
  17. 攻防世界-CRYPTO新手区
  18. C语言编程-随机步法的实现
  19. dubbo系列九、dubbo路由规则和蓝绿切换
  20. Google Play开发者账号注册

热门文章

  1. Ubuntu中安装nginxError
  2. Linux 监控命令之 netstat
  3. Java线程池有哪些作用
  4. 【原】webpack--文件监听的原理
  5. 《领域驱动设计》第二部分:模型驱动设计的构造块 第四章:分离领域 阅读笔记...
  6. c#: 任务栏进度显示(TaskbarManager)
  7. okHttp源码解析------待续
  8. 微信扫码下载iosAPP
  9. 用户登录和注册的功能
  10. jq-实战之表格筛选