博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js实现两种实用的排序算法——冒泡、快速排序
阅读量:6943 次
发布时间:2019-06-27

本文共 1145 字,大约阅读时间需要 3 分钟。

零:数据准备,给定数组arr=[2,5,4,1,7,3,8,6,9,0];

一:冒牌排序

1思想:冒泡排序思想:每一次对比相邻两个数据的大小,小的排在前面,如果前面的数据比后面的大就交换这两个数的位置

       要实现上述规则需要用到两层for循环,外层从第一个数到倒数第二个数,内层从外层的后面一个数到最后一个数

2特点:排序算法的基础。简单实用易于理解,缺点是比较次数多,效率较低。

3实现:

var times=0;var bubbleSort=function(arr){    for(var i=0;i
arr[j]){
//如果前面的数据比后面的大就交换 var temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } console.log("第"+(++times)+"次排序后:"+arr); } } return arr;}console.log("The result is:"+bubbleSort(arr));

 

4效率:数组长度10,排序次数45次。

 

二:快速排序

1思想:快速排序思想:先找到一个基准点(一般指数组的中部),然后数组被该基准点分为两部分,依次与该基准点数据比较,如果比它小,放左边;反之,放右边。

      左右分别用一个空数组去存储比较后的数据。最后递归执行上述操作,直到数组长度<=1;

2特点:快速,常用。缺点是需要另外声明两个数组,浪费了内存空间资源。

3实现:

var times=0;var quickSort=function(arr){     //如果数组长度小于等于1无需判断直接返回即可    if(arr.length<=1){        return arr;    }    var midIndex=Math.floor(arr.length/2);//取基准点    var midIndexVal=arr.splice(midIndex,1);//取基准点的值,splice(index,1)函数可以返回数组中被删除的那个数arr[index+1]    var left=[];//存放比基准点小的数组    var right=[];//存放比基准点大的数组    //遍历数组,进行判断分配    for(var i=0;i

 

4效率:数组长度10,排序次数22次。

 

三:总结

两种方法各有优缺点,但是这两种方法作为程序员必须掌握,因为一种是最基础的,另一种是最常用的,面试或者日常都会碰到。

转载地址:http://pcinl.baihongyu.com/

你可能感兴趣的文章
报表系统结构优化之中间数据外置
查看>>
《JAVA与模式》之门面模式
查看>>
vim/vi的文件内、跨文件复制粘贴操作、替换操作
查看>>
java命令执行jar文件
查看>>
python get class base name
查看>>
论这场云盘大战,以及各网盘的优劣
查看>>
怪异的JavaScript系列(三)
查看>>
辅助模式最终考验的是想象力,先来看看怎么用!| Accessibility
查看>>
TiDB 源码阅读系列文章(九) Hash Join
查看>>
【个人向整理】Promise
查看>>
用 Algolia DocSearch 轻松实现文档全站搜索
查看>>
Kibana 用户指南(安装Kibana)
查看>>
阿里CEO张勇:我们理解AI是Alibaba Intelligence
查看>>
mysql分表、分区
查看>>
关于do_brk()分析
查看>>
使用原生JS进行前后端同构
查看>>
【MySQL学习笔记】 MySQL 建立索引
查看>>
Mac开发React Native ---环境搭建
查看>>
[译] 如何手动启动 Angular 程序
查看>>
【数据结构】Java语言描述-单链表的基本操作
查看>>