js数组冒泡排序、快速排序、插入排序
1、冒泡排序
- //第一种
- function bubblesort(ary){
- for(var i=0;i<ary.length-1;i++){
- for(var j=0;j<ary.length-1-i;j++){
- if(ary[j] > ary[j+1]) {//如果前面的数据比后面的大就交换
- var items = ary[j];
- ary[j] = ary[j+1];
- ary[j+1] = items;
- }
- }
- }
- return ary;
- }
- var ary=[2,5,4,1,6,3];
- console.log(bubblesort(ary));
- //第二种
- var bubbleSort=function(arr){
- for(var i=0;i<arr.length-1;i++){
- for(var j=i+1;j<arr.length;j++){
- if(arr[i]>arr[j]){//如果前面的数据比后面的大就交换
- var temp=arr[i];
- arr[i]=arr[j];
- arr[j]=temp;
- }
- }
- }
- return arr;
- }
- var arr=[2,5,4,1,6,3];
- console.log(bubbleSort(arr));
2、快速排序
- // 数组快速排序的原理 : 获取数组的中间项,然后对数组进行循环,判断数组每一项和这个中间项进行比较,比中间项小的放在左边数组,比中间项大的放进右边的数组;然后通过递归对左边数组右边数组进行同样的处理,最后把每一个数组和中间项拼接在一起;
- function quickSort(ary) {
- // 当数组长度为一时,不需要再递归
- if(ary.length<=1){
- return ary;
- }
- // 计算中间项的索引,偶数项取中间两项后面一项,奇数项取中间项
- var index = Math.floor(ary.length/2);
- // splice : 返回值是一个数组,通姑索引获取中间项
- var middle = ary.splice(index,1)[0];
- var left = [];
- var right = [];
- for(var i=0;i<ary.length;i++){
- var cur = ary[i];
- if(cur<middle){
- left.push(cur);
- }else{
- right.push(cur);
- }
- }
- return quickSort(left).concat(middle,quickSort(right));
- }
3、插入排序
- function insertSort(ary){
- var newAry= [];
- newAry.push(ary[0]);
- for(var i=1;i<ary.length;i++){
- var cur = ary[i];
- for(var j=newAry.length-1;j>=0;){
- if(cur<newAry[j]){
- j--;
- if(j===-1){
- newAry.unshift(cur);
- }
- }else{
- newAry.splice(j+1,0,cur);
- break;
- }
- }
- };
- return newAry;
- }
js数组冒泡排序、快速排序、插入排序的更多相关文章
- JS实现冒泡排序,插入排序和快速排序(从input中获取内容)
以前参加面试的时候,被问到过让用JS实现一个快速排序,当时太年轻,并没有回答上来. 于是,这里便把三种排序都用JS来做了一下.结合html,从input文本框中获取输入进行排序. 关于这几种算法的原理 ...
- js数组冒泡排序
文章地址 https://www.cnblogs.com/sandraryan/ js数组的冒泡排序是最经典的一种排序方式(我以为). 冒泡排序是吧一组数组的元素两两比较,交换位置,通过多轮比较,实现 ...
- js数组冒泡排序,快速排序的原理以及实现
冒泡排序: 随便从数组中拿一位数和后一位比较,如果是想从小到大排序,那么就把小的那一位放到前面,大的放在后面,简单来说就是交换它们的位置,如此反复的交换位置就可以得到排序的效果. var arr = ...
- JS数组冒泡排序&去重
冒泡排序: var a = [2,1,4,3,6,5]; for(var d = 0 ; d< a.length; d++){ for(var b = d+1; b < a.length; ...
- JavaScript 数据结构与算法之美 - 冒泡排序、插入排序、选择排序
1. 前言 算法为王. 想学好前端,先练好内功,只有内功深厚者,前端之路才会走得更远. 笔者写的 JavaScript 数据结构与算法之美 系列用的语言是 JavaScript ,旨在入门数据结构与算 ...
- 算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)
本篇博客中的代码实现依然采用Swift3.0来实现.在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找.折半查找.插值查找.Fibonacci查找,还包括数结构的二叉排序树以 ...
- 冒泡排序与插入排序(C#实现)
本人应届生面试,发现被问了2次关于排序的算法.当时竟然没写出来!!!好吧,可能是用库函数多了,很久没搞算法了,在纸上写没感觉吧. 今天花了1个多小时写了下冒泡排序与插入排序(C#实现),并写了注释和小 ...
- js数组相关知识集合
一.js数组快速排序 <script type="text/javascript"> var arr = [1, 2, 3, 54, 22, 1, 2, 3]; fun ...
- js 中的快速排序算法简单实现
对于快速排序,最早是在c++中看到,它是利用指针来交换顺序,其实无论哪种语言,原理 和 思想都是一样,然而真正用起来的时候就特别容易忽略一些事实,导致实现失败.废话少说,下面用js实现一下快速排序: ...
随机推荐
- [Algo] 281. Remove Spaces
Given a string, remove all leading/trailing/duplicated empty spaces. Assumptions: The given string i ...
- SSID
无线网络中SSID,是路由器发送的无线信号的名字!如果你将你的无线路由器的SSID:命名为:gouwancheng ,那么当你的无线路由器开启,并启用了无线功能,和允许了SSID广播,那么你就可以轻易 ...
- 使用idea创建spring mvc项目图文教程
使用idea创建spring mvc项目图文教程 前言: 使用惯了eclipse的朋友,如果刚换成了idea或许有些不习惯.但是使用idea之后,就会love上idea了.本文将通过图文讲解怎么通过i ...
- 常用JS图片滚动(无缝、平滑、上下左右滚动)
常用JS图片滚动(无缝.平滑.上下左右滚动)代码大全 <head><-----></head><body> <!--向下滚动代码开始-->& ...
- android多框架实现短视频应用、3D手势旋转、banner控件、指南针、智能管家等应用源码
Android精选源码 android智能管家app源码 Android高仿拼多多分类列表 Android百度地图实例详解之仿摩拜单车APP RecyclerView的LayoutManager搭建流 ...
- ML modeling process
一.数据读取Load Data 二.数据分析EDA 三.数据预处理 四.特征工程Feature engineering 五.modeling & Tuning 六.Result 七.other ...
- 线程、volatile与synchronized、Lock
目录 线程 1.概念: 2.线程生命周期: 3.线程调度 4.线程实现 4.1.实现方式 4.2.之间的区别: 5.线程安全 5.1.volatile与synchronized 5.1.synchro ...
- Markdown 内嵌 HTML 语法
Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式.Markdown内嵌HTML,本文总结了一些常用的HTML标记用于扩展Markdow ...
- mongoDB连接信息及生成对应的collection生成代码
.net,个人封装MONGODDB的操作. using System; using System.Collections.Generic; using System.Linq; using Syste ...
- 一次面试留下的实际应用问题。关于HttpModule,IIS集成模式。
资料来自<IIS7开发与管理完全手册> 周五面试时有点紧张,没能静下心思考,当时隐约想到这个解决方案,但因面试环境和心态确未能明确的表述. 回家的地铁上已经找到解决办法. 要点:1基于IH ...