JavaScript中数组的排序方法:1.冒泡排序 2.选择排序
//1.选择排序:
//从小到大排序:通过比较首先选出最小的数放在第一个位置上,然后在其余的数中选出次小数放在第二个位置上,依此类推,直到所有的数成为有序序列。 var arr2=[19, 8, 27, 6, 15, 4];
for(var i=0;i<arr2.length-1;i++){
for(var j=i+1;j<arr2.length;j++){
if(arr2[j]<arr2[i]){
var temp=arr2[j];
arr2[j]=arr2[i];
arr2[i]=temp;
}
}
}
console.log(arr2);//4,6,8,15,19,27
/*
* //第一轮:第一个数字和后面的每一位进行比较,选择出最小的一个放在第一位上。
[8, 19, 27, 6, 15, 4] //8和19比较选择出8放在第一位
[8, 19, 27, 6, 15, 4] //8和27比较选择出8放在第一位
[6, 19, 27, 8, 15, 4] //8和6比较选择出6放在第一位
[6, 19, 27, 8, 15, 4] //6和15比较选择出6放在第一位
[4, 19, 27, 8, 15, 6] //6和4比较选择出4放在第一位 //第二轮:第二个数字和后面的每一位进行比较,选择出最小的一个放在第二位上。
[4, 19, 27, 8, 15, 6] //19和27比较选择出19放在第二位
[4, 8, 27, 19, 15, 6] //19和8比较选择出8放在第二位
[4, 8, 27, 19, 15, 6] //8和15比较选择出8放在第二位
[4, 6, 27, 19, 15, 8] //8和6比较选择出6放在第二位 *
//第三轮:第三个数字和后面的每一位进行比较,选择出最小的一个放在第三位上。
[4, 6, 19, 27, 15, 8] //27和19比较选择出19放在第三位
[4, 6, 15, 27, 19, 8] //19和15比较选择出15放在第三位
[4, 6, 8, 27, 15, 19] //15和8比较选择出8放在第三位 //第四轮:第四个数字和后面的每一位进行比较,选择出最小的一个放在第四位上。 [4, 6, 8, 15, 27, 19] //27和15比较选择出15放在第四位
[4, 6, 8, 15, 27, 19] //15和19比较选择出15放在第四位 // 第五轮:第五个数字和后面的每一位进行比较,选择出最小的一个放在第五位上。 [4, 6, 8, 15,19, 27] //27和19比较选择出19放在第五位 */
//2.冒泡排序: 从头到尾,比较相邻的两个元素的大小,如果符合交换条件,交换两个元素的位置。每一轮比较中,都会选出一个最大的数,放在正确的位置
var arr = [19, 8, 27, 6, 15, 4];
for(var i=0;i<arr.length;i++){
for(var j=0;j<arr.length-i;j++){ //因为每一轮比较都会选择出最大的一位放在最后,下次再次比较时不用和已经选择出的进行比较,所以才会有 j<arr.length-i ;
if(arr[j]>arr[j+1]){ //如果前面的数比后面的数大,定义一个临时变量来交换两个数的位置。
var temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
console.log(arr);// 4,6,8,15,19,27
//从小到大排序:
/*
* //第一轮:
[8, 19, 27, 6, 15, 4]
[8, 19, 27, 6, 15, 4]
[8, 19, 6, 27, 15, 4]
[8, 19, 6, 15, 27, 4]
[8, 19, 6, 15, 4, 27]
// 第一轮选出了最大的元素27放在了数组的最后一位 //第二轮:
[8, 19, 6, 15, 4, 27]
[8, 6, 19, 15, 4, 27]
[8, 6, 15, 19, 4, 27]
[8, 6, 15, 4, 19, 27] //第二轮选出了最大的元素19放在了数组的倒数第二位
*
//第三轮:
[6, 8, 15, 4, 19, 27]
[6, 8, 15, 4, 19, 27]
[6, 8, 4, 15, 19, 27] //第三轮选出了最大的元素15放在了数组的倒数第三位 //第四轮: [6, 8, 4, 15, 19, 27]
[6, 4, 8, 15, 19, 27] // 第四轮选出了最大的元素8放在了数组的倒数第四位 // 第五轮: [4, 6, 8, 15, 19, 27] // 第五轮选出了最大的元素6放在了数组的第二位
*/
JavaScript中数组的排序方法:1.冒泡排序 2.选择排序的更多相关文章
- javascript中数组Array的方法
一.常用方法(push,pop,unshift,shift,join)push pop栈方法,后进先出var a =[1,2,3];console.log(a.push(40)); //4 返回数组的 ...
- 【排序算法】——冒泡排序、选择排序、插入排序、Shell排序等排序原理及Java实现
排序 1.定义: 所谓排序,即是整理文件中的内容,使其按照关键字递增或递减的顺序进行排列. 输入:n个记录,n1,n2--,其对应1的关键字为k1,k2-- 输出:n(i1),n(i2)--,使得k( ...
- php排序介绍_冒泡排序_选择排序法_插入排序法_快速排序法
这里我们介绍一些常用的排序方法,排序是一个程序员的基本功,所谓排序就是对一组数据,按照某个顺序排列的过程. 充效率看 冒泡排序法<选择排序法<插入排序法 排序分两大类: 内部排序法 交换式 ...
- javascript中数组常用的方法
在JavaScript中,数组可以使用Array构造函数来创建,或使用[]快速创建,这也是首选的方法.数组是继承自Object的原型,并且他对typeof没有特殊的返回值,他只返回'object'. ...
- javascript中数组常用的方法和属性
前言 在javascript中,数组是一种非常重要的数据类型,我们时常会和它打交道,最近在开发项目中频繁的使用到数组,但是自己对数组的众多方法已经是非常模糊了,为了方便自己以后能够更好的使用数组中的属 ...
- Javascript中数组的判断方法
摘要: 1.数组检测的方法: 1) typeof . 2) instanceof . 3) constructor . 4) Object.prototype.toString. 5) Array.i ...
- javascript中数组的concat()方法 - 数组连接
<html> <head> <title>数组的concat()方法</title> <script> /* 数组的concat()方法: ...
- 【前端_js】javascript中数组的map()方法
数组的map()方法用于遍历数组,每遍历一个元素就调用回调方法一次,并将回调函数的返回结果作为新数组的元素,被遍历的数组不会被改变. 语法:let newAarray = arr.map(functi ...
- Java常用的经典排序算法:冒泡排序与选择排序
一.冒泡排序 冒泡排序(Bubble Sort)是一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为 ...
- 一张图看懂JavaScript中数组的迭代方法:forEach、map、filter、reduce、every、some
好吧,竟然不能单发一张图,不够200字啊不够200字! 在<JavaScript高级程序设计>中,分门别类介绍了非常多数组方法,其中迭代方法里面有6种,这6种方法在实际项目有着非常广泛的作 ...
随机推荐
- cocos游戏开发小白教程网站
<Quick-Cocos2d-x v3.3小白书系列教程> <Quick-Cocos2d-x初学者游戏教程>
- Bug 5323844-IMPDP无法导入远程数据库同义词的同义词
参见MOS文档: Bug 5323844 - SYNONYM for a SYNONYM in remote database not imported using IMPDP (文档 ID 5323 ...
- php实现记住密码下次自动登陆
这篇博客里面还写到 实现“记住我的登录状态”的功能方法,简言之,就是对首先对session进行用户信息赋值,检测session,失效后,利用cookie对其赋值: 在实现过程中,根据网上一些代码贴,整 ...
- 在webpack自定义配置antd的按需加载和修改主题色
最近使用antd来做react项目的UI.从antd官网上,在使用create-react-app脚手架搭建项目时步骤如下: (1)添加模块 react-app-rewired, babel-plug ...
- webpack 解决跨域问题
一.webpack 内置了 http-proxy-middleware 可以解决 请求的 URL 代理的问题 安装:npm install --save http-proxy-middleware 二 ...
- 【Spring学习笔记-MVC】Spring MVC之多文件上传 (zhan)
http://www.cnblogs.com/ssslinppp/p/4607330.html (zhan)
- Python 模型定义 :通过pymysql和数据模型(models.py)创建mysql表及表结构
一.model的配置 1.创建数据库 2.安装pymysql 3.修改配置文件 数据库连接配置 DATABASES = { 'default': { 'ENGINE': 'django.db.back ...
- Gibbs Sampling深入理解
二维Gibbs Sampling算法 Gibbs Sampling是高维概率分布的MCMC采样方法.二维场景下,状态(x, y)转移到(x’, y’),可以分为三种场景 (1)平行于y轴转移,如上图中 ...
- Spring 知识点提炼-转
https://www.cnblogs.com/baizhanshi/p/7717563.html 1. Spring框架的作用 轻量:Spring是轻量级的,基本的版本大小为2MB 控制反转:Spr ...
- mybatis源码解析5---SqlSession解析
由之前解析可知,mybatis启动的时候会加载XML配置文件解析生成全局配置对象Configuration对象,SqlSessionFactoryBuilder类会根据Configuration对象创 ...