当前位置:首页 > TAG信息列表 > n个元素快速排序最坏要多少轮什么是快速排序?介绍

n个元素快速排序最坏要多少轮什么是快速排序?介绍

n个元素快速排序最坏要多少轮 什么是快速排序?

什么是快速排序?

1.如何理解快速排序

快速排序是对冒泡排序的一种改进,它是不稳定的。由c.a.r.hoare在1962年提出的一种划分交换排序,采用的是分治策略(一般与递归结合使用),以减少排序过程中的比较次数,它的最好情况o(nlogn),最坏情况o(n^2),平均时间复杂度为o(nlogn)。分而治之不是一种解决问题的算法,而是一种希望问题分解,将复杂的问题划分为多个简单问题来解决的思想。

?

n个元素快速排序最坏要多少轮 什么是快速排序?

快速排序的基本思想:

?

选择一个基准数,通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小。然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以达到全部数据变成有序。

?

快速排序的步骤:

?

(1)从数列中挑出一个

如何通过js对ipv6进行排序?

不知道你所指的排序是哪种规则排序。排序算法分类比较排序,时间复杂度为o(nlogn)~o(n^2),主要有:冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序等非比较排序,时间复杂度可以达到o(n),主要有:计数排序,基数排序,桶排序等。

选择排序每次比较的是数组定索引的值与全数组中每个值的大小比较,每次都选出一个最小(最大)值,如果当前索引的值大于之后索引的值,则两者进行交换。

冒泡排序每次从数组的最开始索引处与后一个值进行比较,如果当前值比较大,则交换位置。这样一次循环下来,最大的值就会排入到最后的位置。

插入排序类似于扑克牌的插入方法,选取待排列数组中的任意一个数字作为已排序的基准,再依次从待排序数组中取出数字,根据依次比较,将这个数字插入到已排序的数组中。

二分插入排序是直接插入排序的一个变种,利用二分查找法找出下一个插入数字对应的索引,然后进行插入。当n较大时,二分插入排序的比较次数比直接插入排序的最差情况好得多,但比直接插入排序的最好情况要差,所当以元素初始序列已经接近升序时,直接插入排序比二分插入排序比较次数少。二分插入排序元素移动次数与直接插入排序相同,依赖于元素初始序列。

希尔排序是一种更高效的插入排序,通过设计步长(gap)将数组分组,然后每组中单独采用排序算法将每组排序,然后在缩小步长,进行重复的分组排序工作,直到gap变为1的时候,整个数组分为一组,算法结束。

例如:数组[1,4,5,2,3,9,0,7,6],如果每次以数组长度的一半来作为步长,可以分解为以下步骤

1.gap:math.floor(9/2)4

分为四组,分组为:{1,3},{4,9},{5,0},{2,7}

最后一个数字6需要等到第5个数字排序完成,也就是3,可以得出3依旧还处在第4索引的位置,因此最后一个分组为{3,6}

完成一轮分组以及排序后的数组为:[1,4,0,2,3,9,5,7,6]

2.gap:math.floor(4/2)2

分为两组,分组为:{1,0,3,5,6},{4,2,9,7}

完成第二轮分组以及排序后的数组为:[0,2,1,4,3,7,5,9,6]

3.gap:math.floor(2/2)1

分为一组,即为:{0,2,1,4,3,7,5,9,6}

完成第三轮分组以及排序后的数组为:[0,1,2,3,4,5,6,7,9]//分类--------------内部比较排序//数据结构----------数组//最差时间复杂度----根据步长序列的不同而不同。已知最好的为o(n(logn)^2)//最优时间复杂度----o(n)//平均时间复杂度----根据步长序列的不同而不同。//所需辅助空间------o(1)//稳定性------------不稳定

vararr[1,4,5,2,3,9,0,7,6]vargapmath.floor(arr.length/2)

functionswap(arr,i,j){varttarr[j]arr[j]arr[i]arr[i]t}

for(gapgt0gapmath.floor(gap/2)){//从第gap个元素,逐个对其所在组进行直接插入排序操作for(varigapiltarr.lengthi){varji//这里采用的其实是冒泡排序while(j-gapgt0ampamparr[j]ltarr[j-gap]){//插入排序采用交换法swap(arr,j,j-gap)j-gap}//或者插入排序vartemparr[j]if(arr[j]ltarr[j-gap]){while(j-gapgt0ampamptempltarr[j-gap]){arr[j]arr[j-gap]j-gap}arr[j]temp}}}

console.log(arr)

排序步长时间插入排序


海通号 寻途旅游网

  • 关注微信关注微信

猜你喜欢

热门标签

扫描全能王如何去掉字迹 荣耀手机底部三键怎么设置 word文档隐藏段落按钮 iPhone备忘录密码忘了怎么找回 哪个app的积分可以换哔哩哔哩会员介绍 微信删除照片能恢复吗 红米k40价格 当当网上购买电子书好吗 手机照片怎样才能彻底清理干净 万兴pdf专家取消默认打开 lofter为什么一用就没网lofter啥意思? iphone为什么下载不了微信 手机的危害与好处你们平时玩手机、看手机都在看什么? 微信怎么取消爱奇艺自动续费电信卡怎样取消爱奇艺包月支付? 苹果手机按住页面放大怎么设置苹果手机屏幕不能缩小怎么办? win7怎么合并盘win7任务栏应用程序多窗口如何设置重叠与展开? 微信收藏笔记录音怎么转化成mp3 淘宝怎么设置收货地址淘宝怎么设置放丰巢快递柜? 小米手机看不到电池健康状态小米9为什么不显示电池寿命?介绍 苹果appstore怎么看下载过的软件 抖音怎么绑定蓝v员工号 如何让标题居中word编辑中如何将标题设置字体和居中对齐? 海信e76怎么加密照片极光wifi怎么用?介绍 oppo手机4g设置方法oppo手机变成2g怎么调回4g来? 怎么把游戏隐藏到浏览器隐秘浏览器快捷方式? 微信聊天模拟器appxlog文件怎么在电脑打开?介绍 ppt的形状怎么改不改变宽度怎么改变ppt的尺寸?介绍 excel右上角的绿三角怎么加上Excel表格中如何将数据标为红色?介绍 拼多多的虚拟产品最迟多久到账拼多多上怎么发布虚拟产品?介绍 php代码一分钟执行一次PHP如何在后台执行?介绍

微信公众号