快速排序是一种在大多数情况下比冒泡排序效率更高(详情参考有关算法复杂度的文章)的算法。注意:许多编程语言内置的排序 API 底层实现便是基于快速排序。ES5 与 ES6 语法在实现该算法时区别不大,以下仅提供 ES5 版本。function quickSort(arr) {var len = arr.length;if (len <= 1) {return arr.slice(0); // 注意用 slice 可防范 arr[0] 为 undefined }var left = [], right = [], mid = [];mid.push(arr[0]);for (var i = 1; ...
首先要介绍一下冒泡排序,冒泡排序的过程很简单,首先将第一个记录的关键字和第二个记录的关键字进行比较,若为逆序,则将两个关键字交换,然后比较第二个和第三个,直到最后一个比较完成。这是第一趟冒泡,其结果使得关键字最大的记录被安置到最后一个位置上了。然后对序列前n-1个元素进行第二次冒泡,将倒数第二个选出。以此类推直到所有被选出,冒泡结束。 通过分析可以得出,冒泡排序的时间复杂度为O(n2)。 ...
一、快速排序法概念 我们将一个杂乱无章的数组进行一个快速排序,可以先从一个数组中取一个中间值,将一个数组一分为2,左边的数组跟中间值进行比较,小的放在左边,大的放在右边。比较完毕后再次取中间值,再次比较一次类推 二、思路 1、取的中间值,以及中间值的下标 2、创建一个left空数组,存放小于中间值的数据 3、创建一个right空数组,存放大于中间值的数据 4、递归的终止条件,如果数组的长度等于1的时...
JS快速排序算法 先找到一个基准值,与他比较,比他小的放左边,大的放右边,再递归比较,最后得出结果function fastSort(arr){if(arr<=1){return arr;}var index = parseInt(arr.length / 2);var item = arr.splice(index,1);var left = [];var right = [];for(var i = 0;i<arr.length;i++){if(arr[i]<item){left.push(arr[i]);}if(arr[i]>item){right.push(arr[i]);}}return fastSort(left).concat(item,fastSort(right));}
原文...
冒泡排序 var arr = [2,43,35463,232,2,645,4567,5];function bubbleSort(arr) {for (let i = 0 ; i < arr.length-1 ; i++) {for (let j = 0 ; j < arr.length - 1 - i ; j++) {if(arr[j] > arr[j+1]){var temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}}bubbleSort(arr);console.log(arr); 2、快速排序var arr = [2,43,35463,232,2,645,4567,5];function quickSort(arr) {//标杆const pivot = arr[0];//比标杆大的数组va...
以下贴出两种实现方式,结果一样,但有些许的差别:第一种: 1 <script type="text/javascript">2var arr=[6,7,8,3,4,5,9];3function quicksort(left,right){4if(left>right){5return ;6 }7var temp=0;8var i=right;9var j=left;
10 temp=arr[left];
11while(arr[i]>arr[left]){
12 i--;
13 }
14while(arr[j]<=arr[left]){
15 j++...
JS排序之快速排序一个数组中的数据,选择索引为(2/数组长度)的那个数据作为基数,数组中的其他数据与它对比,比它数值小的放在做数组,比它数值大的放在右数组,最后组合 左数组+基数+右数组,其中,左数组和右数组再调该方法,也就是递归调用,当数组长度小于2时,停止。 <script>
var arr=[12,56,15,65,55,90,21,9];
function fastSort(arr){if(arr.length<2){return arr;}var left=[];var right=[];var midIndex=Math.floor(a...
这篇文章主要介绍了关于JavaScript实现快速排序的算法思想,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下目前,最常见的排序算法大概有七八种,其中"快速排序"(Quicksort)使用得最广泛,速度也较快。它是图灵奖得主 东尼霍尔(C. A. R. Hoare)于1960时提出来的。快速排序"的思想很简单,整个排序过程只需要三步: (1)在数据集之中,选择一个元素作为"基准"(pivot)。 (2)所有小于"基准"的元素,都...
这篇文章主要介绍了JavaScript实现快速排序的方法,结合实例形式分析了快速排序的原理、实现方法及相关操作注意事项,需要的朋友可以参考下本文实例讲述了JavaScript实现快速排序的方法。分享给大家供大家参考,具体如下:思想:通过分治思想、递归方法将数据依次分解为包含较小元素和较大元素的不同子序列1.在数组中选择一个元素为基准2.对数组进行遍历,小于基准的元素都移到基准的左边,大于基准的元素都移到基准的右边3.对基准左...
本篇文章给大家分享的内容是JavaScript如何实现快速排序 ,有着一定的参考价值,有需要的朋友可以参考一下偶然看到阮一峰老师博客中几年前的一个快速排序算法,每次循环一次都要创建两个额外数组,如果数据量大的话要占用不少额外内存。但是数组是引用类型,是可修改的,可以直接操作原数组本身来节约内存。快速排序方法的关键在于选取一个值,将整个数组分为两部分,小的在左,大的在右,下面就是这个函数的写法://该函数的主要目...
本篇文章讲述了JavaScript中的快速排序,大家对JavaScript中的快速排序不了解的话或者对JavaScript中的快速排序感兴趣的话那么我们就一起来看看本篇文章吧, 好了废话少说进入正题吧快速排序又是一种分而治之思想在排序算法上的典型应用。本质上来看,快速排序应该算是在冒泡排序基础上的递归分治法。快速排序的名字起的是简单粗暴,因为一听到这个名字你就知道它存在的意义,就是快,而且效率高! 它是处理大数据最快的排序算法之一...
本文主要和大家分享Js冒泡排序与快速排序实详解,希望能帮助到大家。var array = [7, 8, 6, 12, 87, 35, 1, 48, 56, 12, 48, 69, 12, 12, 12, 103, 15, 6, 88, 24, 26, 25, 9, 6];//冒泡排序
function bubbleSort(arr){var len = arr.length;for(var i=0; i<len; i++){var len_j = len - i - 1;for(var j=0; j<len_j; j++){if(arr[j] > arr[j+1]){arr[j] = arr[j] ^ arr[j+1];arr[j+1] = arr[j] ^ arr[j+1];arr[j] = arr[j] ^ arr[...
快速排序主要分三部分:1、选出一个基准(pivot) 2、所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作;3、递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序;递归的最底部情形,是数列的大小是零或一,也就是永远都已经被排序好了。虽然一直递归下去,但是这个算法总...
本文主要介绍了JavaScript实现快速排序的方法,结合实例形式分析了快速排序的原理、实现方法及相关操作注意事项,需要的朋友可以参考下,希望能帮助到大家。思想:通过分治思想、递归方法将数据依次分解为包含较小元素和较大元素的不同子序列1.在数组中选择一个元素为基准2.对数组进行遍历,小于基准的元素都移到基准的左边,大于基准的元素都移到基准的右边3.对基准左边和右边的两个子集,不断重复前两步,直到所有子集只剩下一个元...
本文主要介绍了JS排序算法之希尔排序与快速排序实现方法,结合实例形式分析了希尔排序与快速排序的原理及javascript实现技巧,需要的朋友可以参考下,希望能帮助到大家。希尔排序:定义一个间隔序列,例如是5,3,1。第一次处理,会处理所有间隔为5的,下一次会处理间隔为3的,最后一次处理间隔为1的元素。也就是相邻元素执行标准插入排序。在开始最后一次处理时,大部分元素都将在正确的位置,算法就不必对很多元素进行交换,这是比...