当前位置: 首页 > 编程笔记 >

JS排序之快速排序详解

范华清
2023-03-14
本文向大家介绍JS排序之快速排序详解,包括了JS排序之快速排序详解的使用技巧和注意事项,需要的朋友参考一下

本文为大家分享了JS快速排序的具体代码,供大家参考,具体内容如下

说明

时间复杂度指的是一个算法执行所耗费的时间
空间复杂度指运行完一个程序所需内存的大小
稳定指,如果a=b,a在b的前面,排序后a仍然在b的前面
不稳定指,如果a=b,a在b的前面,排序后可能会交换位置

--JS快速排序--

原理

从数组中选定一个基数,然后把数组中的每一项与此基数做比较,小的放入一个新数组,大的放入另外一个新数组。然后再采用这样的方法操作新数组。直到所有子集只剩下一个元素,排序完成。

时间复杂度,空间复杂度,稳定性

  • 平均时间复杂度O(nlogn)
  • 最好情况O(nlogn)
  • 最差情况O(n*n)
  • 空间复杂度O(logn)
  • 稳定性:不稳定

快速排序的写法

var examplearr=[8,94,15,88,55,76,21,39];
function fastsort(arr){
  if(arr.length<2){
    return arr;
  }
  var left=[];
  var right=[];
  var pivotIndex=Math.floor(arr.length/2);
  var pivot=arr.splice(pivotIndex,1)[0];
  for(i=0;i<arr.length;i++){
    if(arr[i]<pivot){
      left.push(arr[i]);
    }else{
      right.push(arr[i])
    }
  }
  return fastsort(left).concat([pivot],fastsort(right));
}
console.log(fastsort(examplearr));


解析

pivotIndex是将数组的长度除2向下取整得到的一个数值,数组的长度是不断减半的,所以最后它的值为0

pivot是利用splice方法从数组里获取一个基数

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 快速排序,这是一个经典的算法,本文给出几种python的写法,供参考。 特别是python能用一句话实现快速排序。 思路说明 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。 (1) 分治法的基本思想 分治法的基本思想是:将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解

  • 本文向大家介绍JS排序之选择排序详解,包括了JS排序之选择排序详解的使用技巧和注意事项,需要的朋友参考一下 本文为大家分享了JS选择排序的具体代码,供大家参考,具体内容如下 说明 时间复杂度指的是一个算法执行所耗费的时间 空间复杂度指运行完一个程序所需内存的大小 稳定指,如果a=b,a在b的前面,排序后a仍然在b的前面 不稳定指,如果a=b,a在b的前面,排序后可能会交换位置 --JS选择排序--

  • 帮手 排序函数 因此,我花了一段时间来弄清楚是如何工作的。它从0开始,只有当for循环中的当前元素小于数据透视时,它才会增加1。当我们遇到一个大于pivot值的数字时,splitIndex将保持其值,将递增。在下一步中,如果该数字也小于枢轴,我们交换它们 谢谢

  • 本文向大家介绍C#排序算法之快速排序解析,包括了C#排序算法之快速排序解析的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了C#实现快速排序的具体代码,供大家参考,具体内容如下 代码: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要 Ο(nlogn) 次比较。在最坏状况下则需要 Ο(n2) 次比较,但这种状况并不常见。事实上,快速排序通常明显比其他 Ο(nlogn) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。 快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两

  • 1. 前言 本节内容是排序算法系列之一:快速排序,主要讲解了快速排序的主体思路,选取了一个待排序的数字列表对快速排序算法进行了演示,给出了快速排序算法的 Java 代码实现,帮助大家可以更好地理解快速排序算法。 2. 什么是快速排序? 快速排序(Quick Sort),是计算机科学与技术领域中非常经典的一种排序算法,应用分治思想进行排序。 快速排序由于其时间复杂度优于大部分的排序算法,因而命名为快