js---数组排序法(冒泡排序;快速排序)
1.冒泡排序
原理:将数组的相邻两个元素进行比较,大的就往后移,小的往前,依次比较并且进行递减迭代。
var arr =[54,36,89,1,3,5,2]; function sortArr(arr){
if(arr&&arr.length>0){
for(let i=0;i<arr.length;i++){
for(let j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
let temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
//变量的解构赋值
/*
[arr[j],arr[j+1]]=[arr[j+1],arr[j]]
*/
}
}
}
}
return arr;
}
sortArr(arr);
3.快速排序法
原理:选择一个基准点,一般选折为Math.floor(arr.length/2)为基准点;再把每个元素和基准点进行比较,形成两个子集,反复比较,直到所有元素只剩下 一个位置。
function quickSort(arr){
if(arr.length<=1){
return arr;
}
let centerIndex = Math.floor(arr.length/2);
let centerValue = arr.splice(centerIndex,1)[0];
let left = [],right = [];
for(let i =0;i<arr.length;i++){
if(arr[i]<centerValue){
left.push(arr[i])
}else{
right.push(arr[i])
}
}
return quickSort(left).concat([centerValue],quickSort(right))
}
quickSort(arr)
js---数组排序法(冒泡排序;快速排序)的更多相关文章
- Java 快速排序法 冒泡排序法 选择排序法 插入排序法
1.快速排序的原理: 选择一个关键值作为基准值.比基准值小的都在左边序列(一般是无序的),比基准值大的都在右边(一般是无序的). 从后往前比较,用基准值和最后一个值比较,如果比基准值小的交换位置,如果 ...
- JS数组排序技巧汇总(冒泡、sort、快速、希尔等排序)
本文实例总结了JS数组排序技巧.分享给大家供大家参考,具体如下: 1.冒泡排序 var temp = 0; for (var i = 0; i < array.length; i++) { fo ...
- js中的冒泡排序以及实现一个数组中得最到最大的数字小例
这其实是一个很简单的js就可以实现,当然一般情况就是利用for循环,从第一个跟第二个开始比较,根据大小交互位置,思路很简单. 也就是js中的冒泡排序 冒泡排序 时间复杂度为O(n^2),有两个优点: ...
- javascript数组排序之冒泡排序
冒泡排序 作为一名程序员数组的排序算法是必须要掌握的,今天来说最简单的一种数组排序----冒泡排序 冒泡排序原理 冒泡排序算法是一种简单直观的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如 ...
- js数组排序,支持正反排序以及多维度排序
工作中遇到js数组排序问题,数组中存储的都是对象,于是就百度了下,利用别人的代码进行修改,最终完成可以倒序.反序,可以进行多维度排序的功能源码如下: /** * js数组排序 支持数字和字符串 * @ ...
- js数组排序 reverse()和sort()方法的使用
WEB前端|js数组排序reverse()和sort()方法的使用,数组中已经存在两个可以直接用来重排序的方法:reverse()和sort(). reverse()方法会对反转数组项的顺序. var ...
- 在 React Native 中使用 moment.js 無法載入語系檔案
moment.js 是很常見的日期時間 library,友善的 API 與極佳的執行效率是它的兩大賣點.例如 (new Date()).getFullYear(),如果使用 moment.js 我可以 ...
- 面试题常考&必考之--js数组排序冒泡排序和快速排序
冒泡排序: 原理:比较相邻的元素,将值大的元素交换到右边.(如果相等不进行交换) 实例: 要排列数组:[10,1,35,61,89,36,55] 第一趟排序: 第1次排序:10和1比较,10>1 ...
- js中常见的数组排序算法-冒泡排序和选择排序
reverse( ) 数组逆序 // reverse() 数组逆序 var arr = ["边境牧羊犬", "德国牧羊犬", "金毛" ...
- c/c++ 算法之快速排序法 冒泡排序法,选择排序法,插入排序法
本文详细叙述和实现了快速排序算法,冒泡排序 选择排序 插入排序比较简单,原理在这里不再详述,直接用代码进行了实现. 快速排序法(quicksort)是目前所公认最快的排序方法之一(视解题的对象而定), ...
随机推荐
- ASP.NET MVC 3 Razor 语法
1. 三元运算符 1) 输出文本 1. View var var1 = '@(1 < 2 ? "YES" : "NO")'; var var2 ...
- 执行sql,使用带参的写法
db.ExecuteNonQuery("UPDATE QU_QUALITYREPORT SET RETOSTATUS=1 WHERE BATCHID=@0 AND PROVINCEAREA ...
- 迅为IMX6开发板支持全网通4G模块丨GPS模块丨WIFI蓝牙丨千兆以太网
迅为i.MX6开发板丨迅为i.MX6Q开发板丨四核imx6开发板丨Cortec-A9开发板丨资料介绍: 特点: 处理器:Freescale Cortex-A9四核i.MX6Q主频1GHz 核心板配置: ...
- CentOS7查询最近修改的文件
当需要排查问题的时候,经常需要找到最近修改和产生的文件 下面的命令是查询当前目录下以log结尾的日志,并且在30分钟内修改过,这个可以根据情况修改时间为1分钟,查找最新产生的日志 突然想到这个问题,是 ...
- 实现两线程的同步一(wait/notify)
1.使用Object的wait和notify public class WaitAndNotifyDemo { public static void main(String[] args) throw ...
- ES6走一波 Generator异步应用
Generator 函数的异步应用 JS异步编程 callback Promise(解决回调地狱) 事件 发布订阅 generator Thunk函数 屁股函数 两次高阶调用的函数 第一次调用的入参 ...
- 【try..catch..】【判断输入是否为空】【onchange事件】【onmouseover和onmouseout事件】【onmousedown和onmouseup事件】
1.try..catch.. <body><script>function myFunction(){try{ var x=document.getElementById(&q ...
- django 学习手册 - ORM 报错集(随时更新)
报错问题: 问题一:(1050代码) django.db.utils.InternalError: (1050, "Table 'app01_group' already exists&qu ...
- SpringSecurity实现短信登录功能
⒈封装短信验证码类 package cn.coreqi.security.validate; import java.time.LocalDateTime; public class Validate ...
- 使用@RequestBody将请求体映射到Action方法参数中
@PostMapping("/user") public User create(@RequestBody User user){ System.out.println(user. ...