算法的平均时间复杂度为O(nlogn)。但是当输入是已经排序的数组或几乎排好序的输入,时间复杂度却为O(n^2)。为解决这一问题并保证平均时间复杂度为O(nlogn)的方法是引入预处理步骤,它惟一的目的是改变元素的顺序使之随机排序。这种预处理步骤可在O(n)时间内运行。能够起到同样作用的另一种简单方法是在算法中引入一个随机元素,这可以通过随机地选择拆分元素的主元来实现。随机选择主元的结果放宽了关于输入元素的所有排列的可能性相同的步骤。引入这一步来修正原先的快速排序,可得到下面所示的随机化快速排序。新算法只是在区间[low…high]中一致随机地选择一个索引v,并将A[v]和A[low]交换,然后按照原来的快速排序算法继续。这里,parseInt(Math.random()*(high-low+1) + low)返回一个在low和high之间的数。
复制代码 代码如下:
/****************************************
算法:split
输入:数组A[low...high]
输出:
1.若有必要,输出按上述描述的重新排列的数组A;
2.划分元素A[low]的新位置w;
****************************************/
function split(array, low, high) {
var i = low;
var x = array[low];
for(var j = low + 1; j <= high; j++) {
if(array[j] <= x) {
i ++;
if(i != j) {
var temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
temp = array[low];
array[low] = array[i];
array[i] = temp;
return i;
}
/****************************************
算法:rquicksort
输入:A[0...n-1]
输出:按非降序排列数组A[0...n-1]
rquicksort(A, 0, n-1);
****************************************/
function rquicksort(array, low, high) {
if(low < high) {
/******随机化拆分元素的主元*******/
var v = parseInt(Math.random()*(high-low+1) + low);
var tmp = array[low];
array[low] = array[v];
array[v] = tmp;
/******随机化拆分元素的主元*******/
var w = split(array, low, high);
rquicksort(array, low, w -1);
rquicksort(array, w +1, high);
return array;
}
}
var array = [33, 22, 11, 88, 23, 32];
array = rquicksort(array, 0, array.length-1);
console.log(array);
相关推荐:
为什么做seo矩阵项目,为什么做seo矩阵项目不能做 ,怎么用ai写作
360ai问答-智能时代的全能助手,未来的智慧生活,ai生成白底
ChatGPT坏了用什么?替代方案,满足你的智能对话需求,星际一的ai
SEO永远,数字营销的核心力量,广州seo搜索栏内容
ChatGPT:智能对话开创新时代,ai做渐变直线
SEO热词:提升网站排名的关键秘诀,一句话营销推广怎么写好
SEO元素-提升网站排名的核心要素,推广分成网站有哪些
SEO定价策略:如何根据企业需求定制最佳价格方案,教育培训抖音营销推广
AI代谢文章:从灵感到成果的创作革命
在线AI文章:为您打造全新内容创作体验
SEO占位:如何在竞争激烈的市场中占得先机?,梁平区省心全网营销推广
ChatGPT故障你从未听过的真相,究竟是什么让它偶尔“失灵”?,ai 图片 矢量
用AI创作的文章算原创吗?深度背后的逻辑与意义
seo需要学些什么内容,学seo的基础 ,中国ai公司年收入
ChatGPT界面看不到用户:隐秘的互动方式与智慧的背后,AI和UR
SEO详解:如何优化你的网站提升排名,获得更多流量,伊春湖南网站优化推广
如何查文章AI率?全面解析AI文章检测工具及技巧
“只能写作”:在创作的世界里,选择文字,就是选择自由,云南关键词排名推广报价
ChatGPT免费版的限制:你需要了解的5大制约因素,Ai分解模型
目前国内最好的AI人工智能软件:未来新篇章
ChatGPT登录503错误?轻松解决,快速恢复畅享智能体验!,ai怎么加植物材质效果
ChatGPT目前,我无法查看或打开附件,但我依然能为你提供全面的帮助,苹果ai谷歌ai
优化平台:让数字化转型更简单、更高效,莆田谷歌seo品牌排行
SEO联系:如何通过SEO优化提升您的网络营销效果,企业营销推广获客
“关键词指白”:揭秘如何通过精准关键词优化实现流量暴增,全面分析网站seo
用AI写文章,释放你的创作潜力!
【BVIP尊享体验:超越奢华,开启专属未来】,珠宝网站建设思路
SEO总结:如何通过优化提升网站排名与流量,关键词排名消失
ChatGPT中文版下载免费版:智能对话新时代,尽在,ai光波
ChatGPT无法加载?检查您的网络设置并尝试重启Chat,ai写作怎么写作文的
SEO优化:如何让网站更具有吸引力,散文ai写作咒语是什么
SEO做网站点击:提升网站流量的关键策略,国内ai写作论文
SEO教育:搜索引擎优化,开启成功职业之路,搜狗SEO排名接单
为什么“未备案域名”会成为互联网行业中的重要问题?,江干区seo优化价格
SEO新手必看:从零开始SEO优化的终极指南,随州网站优化技巧
SEO优化知识全解析:提升网站排名的秘密武器,ai出错合集
SEO找词:如何精准找到高效关键词,提升排名和流量,河源网站优化平台
为什么seo这么难,seo难嘛 ,ai宁中则
SEO无限:如何利用SEO技术实现网站流量爆发?,网站建设总监
AI生成网页模板,轻松打造专业网站,ai网格画法
优化型网站:提升企业竞争力的必备利器,重庆网站推广工作如何
乘风SEO-引领企业互联网时代的腾飞之路,南昌b站关键词排名优化贵不贵
SEO伪创:提升网站排名的危险策略与如何避免,怎样介绍社交网站推广
SEO小白必看!从零起步SEO的秘诀,轻松提升网站排名,南京网站运营优化平台
AI写作的崛起-“只能AI写作”背后的巨大潜力,舞狮摄影ai
AI缩写文本:助力智能生活的革新力量,ai智能写作生成神器下载
SEO专业怎么样?未来发展的无限潜力与职业前景,联通ai智能早教
seo用什么论坛引流,seo引流方法 ,ai写作续写神器
ChatGPT对于大数据发展的帮助:赋能行业变革,推动智能化未来,ai写作真的好吗
ChatGPT宕机恢复时间如何解决用户焦虑与技术背后的故事,ai人工智能写作火山