js实现数组冒泡排序、快速排序原理_javascript技巧

本文为大家分享了js数组冒泡排序、快速排序的实现原理,供大家参考,具体内容如下

1、冒泡排序

  随便从数组中拿一位数和后一位比较,如果是想从小到大排序,那么就把小的那一位放到前面,大的放在后面,简单来说就是交换它们的位置,如此反复的交换位置就可以得到排序的效果。

var arr = [3,1,4,2,5,21,6,15,63];

function sortA(arr){
 for(var i=0;i<arr.length-1;i++){
 for(var j=i+1;j<arr.length;j++){
  //获取第一个值和后一个值比较
 var cur = arr[i];
 if(cur>arr[j]){
  // 因为需要交换值,所以会把后一个值替换,我们要先保存下来
 var index = arr[j];
  // 交换值
 arr[j] = cur;
 arr[i] = index;
 }
 }
 }
 return arr;
}
//因为一次循环只能交换一个最大的值,所以需要再套一层for循环。

2、快速排序:

   从数组的中间拿一个值,然后通过这个值挨个和数组里面的值进行比较,如果大于的放一边,小于的放一边,然后把这些合并,再进行比较,如此反复即可。

var arr = [3,1,4,2,5,21,6,15,63];
function sortA(arr){
 // 如果只有一位,就没有必要比较
 if(arr.length<=1){
 return arr;
 }
 // 获取中间值的索引
 var len = Math.floor(arr.length/2);
 // 截取中间值
 var cur = arr.splice(len,1);
 // 小于中间值放这里面
 var left = [];
 // 大于的放着里面
 var right = [];
 for(var i=0;i<arr.length;i++){
 // 判断是否大于
 if(cur>arr[i]){
 left.push(arr[i]);
 }else{
 right.push(arr[i]);
 }
 }
 // 通过递归,上一轮比较好的数组合并,并且再次进行比较。
 return sortA(left).concat(cur,sortA(right));
}

想要学习更多关于javascript排序的内容,请点击《javascript排序方法实现》

以上就是本文的全部内容,希望对大家的学习有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索js快速排序
, js冒泡排序
js数组排序原理
javascript冒泡排序、javascript冒泡排序法、js数组冒泡排序、java数组冒泡排序、数组冒泡排序,以便于您获取更多的相关知识。

时间: 2024-09-20 01:54:10

js实现数组冒泡排序、快速排序原理_javascript技巧的相关文章

JS中数组重排序方法_javascript技巧

1.数组中已存在两个可直接用来重排序的方法:reverse()和sort(). reverse()和sort()方法的返回值是经过排序后的数组.reverse()方法会反转数组项的顺序: var values=[1,2,3,4,5]; values.reverse(); alert(values); //5,4,3,2,1 在默认情况下,sort()方法按升序排列数组,sort()方法会调用每个数组项的toString()转型方法,然后比较得到字符串,确定如何排序.即使数组中的每一项都是数值,s

js操作数组函数实例小结_javascript技巧

本文实例讲述了js操作数组函数.分享给大家供大家参考,具体如下: 1.删除数组中指定的元素 /** * 参考实例 foreach = function (obj, insp){ if(obj== null && obj.constructor != Array){ return []; } //obj是要处理的数组,obj==null 表示对象尚未存在:obj.constructor != Array 表示对象obj的属性的构造函数不是数组: //constructor属性始终指向创建当前

js创建数组的简单方法_javascript技巧

1.数组的声明方法 (1): arrayObj = new Array(); //创建一个数组. 代码如下: var arr1 = new Array(); (2):arrayObj = new Array([size]) 创建一个数组并指定长度,注意不是上限,是长度. 代码如下: var a = new Array(5); (3):arrayObj = new Array([element0[, element1[, ...[, elementN]]]]) 创建一个数组并赋值. 代码如下: v

深入理解vue.js双向绑定的实现原理_javascript技巧

前言 大家都知道Vue.js最核心的功能有两个,一是响应式的数据绑定系统,二是组件系统.本文仅探究几乎所有Vue的开篇介绍都会提到的hello world双向绑定是怎样实现的.先讲涉及的知识点,再参考源码,用尽可能少的代码实现那个hello world开篇示例. 一.访问器属性 访问器属性是对象中的一种特殊属性,它不能直接在对象中设置,而必须通过defineProperty()方法单独定义. var obj = { }; // 为obj定义一个名为hello的访问器属性 Object.defin

js有序数组的连接问题_javascript技巧

1.前言  昨天碰到一道关于如何解决有序数组的连接问题,这是一个很常见的问题.但是这里要考虑到代码的效率问题,因为要连接的数组都是有序的,这是一个非常重要的前提条件. 2.简单但效率不高的算法   我首先想到的是使用内置的concat方法,然后再对其进行排序,这种方法完全没有考虑到数组是有序的前提条件,代码如下:     复制代码 代码如下: function concatSort(arrA,arrB){      return arrA.concat(arrB).sort(); } 为了弄清楚

js打造数组转json函数_javascript技巧

代码很简单,这里就不多废话了,直接奉上: 复制代码 代码如下: function arrayToJson(o) {         var r = [];         if (typeof o == "string") return "\"" + o.replace(/([\'\"\\])/g, "\\$1").replace(/(\n)/g, "\\n").replace(/(\r)/g, "

js console.log打印对像与数组用法详解_javascript技巧

本文实例讲述了js console.log打印对像与数组用法.分享给大家供大家参考,具体如下: console.log是什么东西,其实就是一个打印js数组和对像的函数而已,就像是php的print_r,var_dump.console.log这个函数本身没什么好说的,这篇博客告诉大家怎么去用这个函数.在说这个函数之前,我想大家用的最多查看js输出,是alert吧,但是alert,只能弹string或者是int的 一.测试文件test.html <html xmlns="http://www

深入理解js数组的sort排序_javascript技巧

废话少说直接上代码: <body> <div> sort()对数组排序,不开辟新的内存,对原有数组元素进行调换 </div> <div id="showBox"> 1.简单数组简单排序 <script type="text/javascript"> var arrSimple=new Array(1,8,7,6); arrSimple.sort(); document.writeln(arrSimple.j

Js的Array数组对象详解_javascript技巧

本文为大家分享了关于Js的Array数组对象的相关资料,供大家参考,具体内容如下 1. 介绍1.1 说明 数组是值的有序集合.每个值叫做一个元素,而每个元素在数组中有一个位置,以数字表示,称为索引.JavaScript数组是无类型:数组元素可以是任意类型,并且同一个数组中的不同元素也可能有不同的类型. --<JavaScript权威指南(第六版)> 1.2 定义方式 var names = new Array("张三", "李四", "王五&q