JS排序算法之希尔排序与快速排序实现方法
作者:xxza 发布时间:2024-11-20 14:14:16
标签:JS,排序算法,希尔排序,快速排序
本文实例讲述了JS排序算法之希尔排序与快速排序实现方法。分享给大家供大家参考,具体如下:
希尔排序:
定义一个间隔序列,例如是5,3,1。第一次处理,会处理所有间隔为5的,下一次会处理间隔为3的,最后一次处理间隔为1的元素。也就是相邻元素执行标准插入排序。
在开始最后一次处理时,大部分元素都将在正确的位置,算法就不必对很多元素进行交换,这是比插入元素高级的地方。
时间复杂度O(n*logn)
function shellSort(){
var N=arr.length;
var h=1;
while(h<N/3){
h=3*h+1;//设置间隔
}
while(h>=1){
for(var i=h; i<N; i++){
for(j=i; j>=h && arr[j]<arr[j-h]; j-=h){
swap(arr, j, j-h);
}
}
h=(h-1)/3;
}
}
function swap(array, i, j){//两个数调换
var temp =array[j];
array[j]=array[i];
array[i]=temp;
}
快速排序:
通过递归的方式将数据依次分解成包含较小元素和较大元素的不同子序列,不断重复这个步骤,直到所有数据都是有序的。
选一个基准值,小于基准值的放一个数组里面。大于基准值的放一个数组里面。
时间复杂度O(n*logn)
function quickSort(arr){
if(arr.length==0){
return [];
}
var left=[];
var right=[];
var p=arr[0];
for(var i=1; i<arr.length; i++){
if(arr[i]<p){
left.push(arr[i]);
}else{
right.push(arr[i]);
}
}
return quickSort(left).concat(p,quickSort(right));
}
快速排序适合用于大型数据集合,在处理小数据集合反而性能会下降。
希望本文所述对大家JavaScript程序设计有所帮助。
来源:https://www.cnblogs.com/xxza/p/4680968.html
0
投稿
猜你喜欢
- 假如您在安装SQL Server 2005时出现计数器错误,在搜索过所有的方法都不适用的情况下可以采用以下方法:将4个计数器删除:(如果没有
- python cron定时任务触发接口自动化巡检定时任务触发方式有几种类型,日常的工作中,研发同学运用比较多的就是cron方式查了一下APS
- 使用本文给出的方法就可以制作出一个简单的rss阅读器了。用xmldom方法打开xml文件,如果是本地的没有问题,就是用Server.MapP
- 这是借鉴了一位兄弟的代码,然后进行修改的,原来代码存在问题,用了2小时,自己修改,终于画出了滑稽脸,也算是对于今天学的turtle绘画库的一
- 1、代码如下:import numpy as npfrom keras.models import Sequentialfrom keras
- 1. 插入数据前判断数据是否存在SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ==
- Python来进行查询和替换一个文本字符串?可以使用sub()方法来进行查询和替换,sub方法的格式为:sub(replacement, s
- import wx import imagesclass DemoTaskBarIcon(wx.TaskBarIcon): &nb
- SQLSTATESQL SERVER 驱动程序错误描述 HY000所有绑定列都是只读的。必须是可升级的列,以使用 SQLSetPos 或 S
- 本文实例讲述了Python实现的桶排序算法。分享给大家供大家参考,具体如下:桶排序也叫计数排序,简单来说,就是将数据集里面所有元素按顺序列举
- 先制作一些数据:import numpy as npimport tensorflow as tfimport matplotlib.pyp
- 如何用下拉列表显示数据库里的内容? 我们来看看实现这个功能的程序:<%Dim objDC, objRSS
- 环境ubuntu 12.04 LTSpython 2.7.3opencv 2.3.1-7安装依赖sudo apt-get install l
- VS Code是微软开源的一款编辑器,插件系统十分的丰富。本文就介绍了如何使用VS Code搭建Go语言开发环境。VS Code配置Go语言
- 具体代码如下所述:#coding=utf-8import itchatfrom itchat.content import TEXTfrom
- 客户端用一个html页面调用一个ashx文件(一般http处理程序),返回 json格式的自定义对象: html: <!DOCTYPE
- 有一个需求, 需要从数据库中导出两张表的数据到同一个excel中鉴于是临时的业务需求, 直接使用Navicat 进行查询并导出数据.数据涉及
- 本文实例讲述了Python实现导出数据生成excel报表的方法。分享给大家供大家参考,具体如下:#_*_coding:utf-8_*_imp
- 本人电脑是windows系统,装了Python3.7版本,但目前tensorflow支持最新的python版本为3.6,遂想再安装Pytho
- 另外一类常用的模板标签是通过渲染 其他 模板显示数据的。 比如说,Django的后台管理界面,它使用了自定义的模板标签来显示新增/编辑表单页