js之冒泡排序与快速排序
//冒泡排序
let arr = [1, 6, 3, 7, 5, 9, 2, 8];
function sort(arr) {
//升序
console.time("冒泡排序耗时")
let num1 = null;
for (let i = 0; i < arr.length - 1; i++) {
//外层循坏的作用是每次循坏找出一个最大数放在这个数组的最后面
for (let j = 0; j < arr.length - i - 1; j++) {
//内层循坏的作用是比较相邻两个数的大小从而进行交换位置
//借助一个中间容器交换位置
if (arr[j] > arr[j + 1]) {
num1 = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = num1;
}
}
}
console.timeEnd("冒泡排序耗时")
}
sort(arr);
1 //快速排序
//快速排序就是从中间取一个数然后声明两个空数组
//小于这个数的放在左边大于这个数的放在右边
//最后通过递归调用实现的一种排序方法
//比冒泡排序用时更多
function sort(arr) {
console.time("快速排序耗时")
if (arr.length <= 1) {
//递归出口
return arr;
}
let middleIndex = Math.floor(arr.length / 2);//中间数的下标 分奇偶
let middle = arr[middleIndex];
let left=[];
let right=[];
for(let i=0;i<arr.length;i++){
if(arr[i]<middle){
left.push(arr[i])
}else if(arr[i]>middle){
//注意这里不要直接写else 要排除相等的时候 否则会造成死循坏
right.push(arr[i])
}
}
console.timeEnd("快速排序耗时")
return sort(left).concat([middle],sort(right))
}
console.log(sort(arr))
发现一枚大牛的十种排序法 https://www.cnblogs.com/beli/p/6297741.html
js之冒泡排序与快速排序的更多相关文章
- js数组冒泡排序,快速排序的原理以及实现
冒泡排序: 随便从数组中拿一位数和后一位比较,如果是想从小到大排序,那么就把小的那一位放到前面,大的放在后面,简单来说就是交换它们的位置,如此反复的交换位置就可以得到排序的效果. var arr = ...
- 面试题常考&必考之--js数组排序冒泡排序和快速排序
冒泡排序: 原理:比较相邻的元素,将值大的元素交换到右边.(如果相等不进行交换) 实例: 要排列数组:[10,1,35,61,89,36,55] 第一趟排序: 第1次排序:10和1比较,10>1 ...
- js数组冒泡排序、快速排序、插入排序
1.冒泡排序 //第一种 function bubblesort(ary){ for(var i=0;i<ary.length-1;i++){ for(var j=0;j<ary.leng ...
- js 冒泡排序与快速排序
刚好今晚看了js的冒泡排序跟快速排序,趁着还没忘记先记下来. 1. 冒泡排序:遍历数组,每个元素都与后一个元素比较,如果大于下一个元素,则两个元素位置调换.否则的话当前元素再与下下个元素比较,一直到 ...
- [C#][算法] 用菜鸟的思维学习算法 -- 马桶排序、冒泡排序和快速排序
用菜鸟的思维学习算法 -- 马桶排序.冒泡排序和快速排序 [博主]反骨仔 [来源]http://www.cnblogs.com/liqingwen/p/4994261.html 目录 马桶排序(令人 ...
- PHP描述冒泡排序和快速排序算法
使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组.使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组.写一个二维数组排序算法函数,能够具有通用 ...
- JavaScript实现冒泡排序、快速排序、插入排序
JavaScript实现冒泡排序.快速排序.插入排序 时间:2014-01-09 18:05:51 来源: 作者:胡晗 冒泡排序的基本思想:所谓冒泡就是泡泡一个一个往上冒,让体积最轻的泡泡浮在最上 ...
- python 实现冒泡排序与快速排序 遇到的错误与问题
今天看了兄弟连php里面的冒泡排序与快速排序,想了下应该可以用python实现. 冒泡排序函数: def mysort(x): len1 = len(x) for i in range(len1-1, ...
- 八大排序方法汇总(选择排序,插入排序-简单插入排序、shell排序,交换排序-冒泡排序、快速排序、堆排序,归并排序,计数排序)
2013-08-22 14:55:33 八大排序方法汇总(选择排序-简单选择排序.堆排序,插入排序-简单插入排序.shell排序,交换排序-冒泡排序.快速排序,归并排序,计数排序). 插入排序还可以和 ...
随机推荐
- android头像上传(获取头像加剪切)
因为项目中需要用到头像上传的功能,所以就下个Ddmo先来实现下. demo我是类似仿微信的,在一个GridView中展示所有的图片,其中第一个item可以去照相:获取到图片后再进行剪切. 图片的剪切是 ...
- 微信小程序开发常见之坑
https://www.cnblogs.com/shunxing/articles/6971648.html input里的value会在浮层上面的,要解决这一问题还是很简单的,在小程序中input有 ...
- Software Testing Techniques Homework 3
1. a.This is the chart b. initial numPrimes = 4, t1 would over the loop. c. t = ( n = 1) d. node cov ...
- CentOS7 安装 JIRA 7.2.x 教程:下载、安装、汉化、破解
1.先看视频,参考着能装出个试用版来,不同的地方后面再做说明.JIRA 安装视频(Linux) http://www.confluence.cn/pages/viewpage.action?pageI ...
- xml php 解析
JSON作为数据交换可以说已经成为了一种事实上的标准,但是前几年和它对应的xml虽然说用的越来越少,但是我感觉还是有他可以应用的地方. json更偏重于程序员来使用和解读,而xml则更适合用户来使用和 ...
- 如何找回SQL Server实例安装时的序列号
当需要再次安装SQL Server时,如果序列号找不到了,可以试着从已经安装的实例里找回序列号,因为安装完SQL Server后,序列号(Product Key)被保存在注册表里: MSDN订阅下载的 ...
- December 27th 2016 Week 53rd Tuesday
A journey of one thousand miles begins with one step. 千里之行始于足下. No matter how slowly you walk, as lo ...
- FetchType与FetchMode的区别
使用例: @OneToMany(mappedBy="item",cascade=CascadeType.ALL,fetch=FetchType.EAGER) @Fetch(valu ...
- 4、Python文件操作工具 xlsxwriter 工具
# _*_ encoding:utf-8 _*_ import xlsxwriter #创建xlsx后缀名的excelexcel = xlsxwriter.Workbook(r'D:\github\f ...
- swift 第一个IOS应用程序
swift 出来也有一阵子了,一直没有时间来研究.简单的看了看.随手写几篇文章.特此声明:本博客纯属个人学习,有不足之处,属于正常,希望多多见谅. 第一个IOS应用程序开发 一.准备工作: (1)Ma ...