资讯专栏INFORMATION COLUMN

js 快速排序

李义 / 299人阅读

摘要:快速排序快速排序使用分治法把一个串分为两个子串。成为分区操作递归的把小于基准值元素的子数列和大于基准值元素的子数列排序

// 快速排序
// 快速排序使用分治法把一个串(list)分为两个子串(sub-lists)。具体算法实现
// 1.从数组中挑出一个元素,成为基准
// 2.重新排列数组,所有元素比基准值小的摆放在基准前面,所有元素比基准大的摆在基准后面(相同的可以任意一边
// 这个分区退出之后,该基准就处于数列的中间位置。成为分区操作
// 3.递归的把小于基准值元素的子数列和大于基准值元素的子数列排序

var quickSort = function(arr) {
  if (arr.length <= 1) { return arr; }
  var pivotIndex = Math.floor(arr.length / 2);
  var pivot = arr.splice(pivotIndex, 1)[0];
  var left = [];
  var right = [];
  for (var i = 0; i < arr.length; i++){
    if (arr[i] < pivot) {
      left.push(arr[i]);
    } else {
      right.push(arr[i]);
    }
  }
  return quickSort(left).concat([pivot], quickSort(right));
};
const arr = [91, 60, 96, 7, 35, 65];
console.log(quickSort(arr));

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/101338.html

相关文章

  • js算法-快速排序(Quicksort)

    摘要:快速排序英语,又称划分交换排序,简称快排,一种排序算法,最早由东尼霍尔提出。 快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),简称快排,一种排序算法,最早由东尼·霍尔提出。在平均状况下,排序n个项目要O(nLogn)次比较。在最坏状况下则需要O(n^2)次比较,但这种状况并不常见。事实上,快速排序O(nLogn)通常明显比其他算...

    Taste 评论0 收藏0
  • js 排序算法之快速排序

    摘要:快速排序是一种划分交换排序。快速排序基于冒泡递归分治。他在大数据情况下是最快的排序算法之一,平均事件复杂度很低而且前面的系数很小,在大量随机输入的情况下最坏情况出现的概率是极小的。 快速排序是一种划分交换排序。它采用了一种分治的策略,通常称其为分治法。 分治法的基本思想是:将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。...

    Eidesen 评论0 收藏0
  • js实现冒泡排序,快速排序,选择排序

    摘要:用冒泡排序快速排序选择排序冒泡排序冒泡排序是比较经典的排序方法,是一种用时间换空间的排序方法。找到并交换的时候,指针位置不变。选择排序没趟都会产生最小值,它不是相邻元素的比较而是在该元素设置一个索引。选择排序循环找到从开始到最后的最小的数 用js冒泡排序,快速排序,选择排序 1.冒泡排序 冒泡排序是比较经典的排序方法,是一种用时间换空间的排序方法。我总结了一下它的特点:(1)它的时间复...

    bbbbbb 评论0 收藏0
  • 关于JS快速排序实现方法

    摘要:所有关键字比该记录关键字小的记录放置在前一部分,所有比它大的记录放置在后一部分,并把改记录排在这两部分的中间称为该记录归位,这个过程称作一次快速排序。代码如下大佬的代码还是比较厉害的,简单易懂,佩服以上就是相关的快速排序的实现方法 由于自己不是计算机专业,数据结构没有太多研究,曾经面试时有被问过关于快速排序以及冒泡排序的写法,冒泡排序比较简单,当时能回答出来,但是快速排序当时就比较懵逼...

    LeexMuller 评论0 收藏0
  • 温故js系列(2)-快速排序&插入排序&选择排序&冒泡排序算法&优化

    摘要:优化当待排序序列长度时,使用插入排序,可以加速排序。插入排序原理通过构建有序序列,对于未排序元素,在已排序序列中从后向前扫描,找到相应位置并插入。堆排序可通过树形结构保存部分比较结果,可减少比较次数。 前端学习:教程&开发模块化/规范化/工程化/优化&工具/调试&值得关注的博客/Git&面试-前端资源汇总 欢迎提issues斧正:排序算法 JavaScript-排序算法及简易优化 快速...

    ningwang 评论0 收藏0
  • 排序算法速度测试(插入排序、二分法插入、选择排序快速排序、堆排序js实现

    摘要:公共函数库用于取出随机排列的数字原数组给原数组赋值排序算法插入排序时间复杂度二分法插入排序选择排序快速排序一堆排序测试用例插入排序时间测试二分法插入排序时间测试选择排序时间测试快速排序时间测试一堆 公共函数库(用于取出随机排列的数字) module.exports={ randomIntegerArray:function(count){ var origina...

    mochixuan 评论0 收藏0

发表评论

0条评论

李义

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<