首页 > 其他分享 >三路快速排序

三路快速排序

时间:2024-09-03 21:04:38浏览次数:1  
标签:function arr quickSort 三路 排序 快速

// 快速排序
function quickSort(arr) {
  if (arr.length <= 1) {
    return arr;
  }
  const pivot = arr[0];
  const left = [];
  const right = [];
  for (let i = 1; i < arr.length; i++) {
    if (arr[i] < pivot) {
      left.push(arr[i]);
    } else {
      right.push(arr[i]);
    }
  }
  return quickSort(left).concat(pivot, quickSort(right));
}

console.time('quickSort');
console.log(quickSort([0, 1, 0, 2, 0, 2, 1, 0, 1]));
console.timeEnd('quickSort');

/* 
  三路排序算法
*/
function threeWaySort(arr) {
  let zero = 0,
    two = arr.length - 1;
  for (let i = 0; i < arr.length; i++) {
    while (arr[i] === 2 && i < two) {
      [arr[i], arr[two]] = [arr[two], arr[i]];
      two--;
    }

    if (arr[i] === 0) {
      [arr[i], arr[zero]] = [arr[zero], arr[i]];
      zero++;
    }
  }

  return arr;
}

console.time('threeWaySort');
console.log(threeWaySort([0, 1, 0, 2, 0, 2, 1, 0, 1]));
console.timeEnd('threeWaySort');

标签:function,arr,quickSort,三路,排序,快速
From: https://www.cnblogs.com/chlai/p/18395440

相关文章

  • lazarus DBGridEh标题栏排序
    lazarusDBGridEh标题栏排序按网上(delphi)的方法发现无效,经测试,以下代码可以正常排序:unitUnit1;{$modeObjFPC}{$H+}interfaceusesClasses,SysUtils,DB,Forms,Controls,Graphics,Dialogs,StdCtrls,Uni,DBGridsEh,DBCtrlsEh,LConvEncoding,DBGridEhImpE......
  • 第二章 快速上手Django框架
    1.终端安装pipinstalldjango==3.2C:\Python39 -python.exe -Scripts -pip.exe -django-admin.exe -Lib -re.py -random.py -site-pakages -django==3.2 ...2.命令行创建项目cd指定目录django-adminstartproject项目名mysite......
  • vue3整合antv x6实现图编辑器快速入门
    安装:npminstall@antv/x6--save如果使用umd包,可以使用下面三个CDN中的任何一个,默认使用X6的最新版:https://unpkg.com/@antv/x6/dist/index.jshttps://cdn.jsdelivr.net/npm/@antv/x6/dist/index.jshttps://cdnjs.cloudflare.com/ajax/libs/antv-x6/2.0.0/index.......
  • 堆排序
    定义堆是一棵完全二叉树。分为大顶堆和小顶堆大顶推:所有节点都大于等于它的两个子节点小顶堆:所有节点都小于等于它的两个子节点伪代码推排序步骤,以升序排列为例,用大顶堆。(降序排列,用小顶堆)构建大顶推把堆顶元素和堆尾元素交换,此时堆尾元素是最大的,堆的大小减一堆顶元素下......
  • Python深入理解快速排序算法及其时间复杂度分析
    Python深入理解快速排序算法及其时间复杂度分析快速排序(QuickSort)是一种高效的排序算法,广泛应用于各种实际场景中。它采用分治法(DivideandConquer)策略,通过选择一个基准元素(pivot),将数组分成两部分,使得左侧部分的元素都小于基准元素,右侧部分的元素都大于基准元素。然后递......
  • mysql模糊查询通过排序调整精准值
    背景:通过模糊查询到的结果,精准值排在后面解决:通过调整字段排序select*fromuserwhere1=1<iftest="keyword!=nullandkeyword!=''">andnamelikeconcat('%',#{keyword},'%')</if><iftest="sort==1and(keyword......
  • 快速搭建一款可交互式的「地理空间」应用
    GreppoGitHub上的开源Python框架,可快速搭建一款可交互式的「地理空间」应用。该框架提供了一整套完整工具包,让你可以轻松打通数据、算法、可视化UI等模块,构建一款交互式应用。https://github.com/greppo-io/greppo ......
  • 预算有限的中小企业,如何免费又快速地开发一套设备巡检系统?
    在当今竞争激烈的商业环境中,中小企业通常面临着设备管理和维护的挑战。尽管他们有着设备巡检的需求,但往往因为预算有限和信息化能力不足而难以快速找到合适的管理系统。现在,无代码平台的出现为中小企业提供了一种高性价比的解决方案。这些平台允许非技术背景的业务人员自行搭建设备......
  • 一文教你10分钟快速玩转魔乐社区
    8月底,魔乐开发者社区上线,引起开发者的关注。据了解,在魔乐社区的平台上,每一位开发者都能找到所需的资源和工具,无论是数据集、模型库还是开发工具,魔乐社区都将提供一站式服务。那该怎么玩呢?来来来,跟随我的脚步,教你10分玩转魔乐开发者社区(modelers.cn)。魔乐社区的基础信息:概念:魔......
  • 【数据结构与算法】:十大经典排序算法
    文章目录前言一、冒泡排序(BubbleSort)1.1冒泡排序原理1.2冒泡排序代码1.3输出结果二、选择排序(SelectionSort)2.1选择排序原理2.2选择排序代码2.3输出结果三、插入排序(InsertionSort)3.1插入排序原理3.2插入排序代码3.3输出结果四、希尔排序4.1希尔排序原......