当前位置:首页 > 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)

排序步长时间插入排序


海通号 寻途旅游网

  • 关注微信关注微信

猜你喜欢

热门标签

CAD怎么快速选择所有的字体 打印机重影严重怎么解决 但是用不了是怎么回事 xr电池显示可以调成百分比吗介绍 excel表格技能大全 怎么看wifi有几个人在使用软件 手机桌面小白点怎么去掉 反向问号怎么打怎么把问号倒过来打出来?介绍 苹果11pro怎么强制重启苹果11灭屏后不能唤醒? 电脑如何关闭自动更新电脑开机显示正在升级怎么回事?介绍 word圆形图表怎么做word文档图标圆的怎么改成方形?介绍 如何在微信上设置公司的位置 有声读物会是个好主意吗?介绍 二建报名照片审核工具怎么用手机怎么取消手机审核中? ifree卡可以开通流量吗宽带不用了不可以报停的吗? 支付宝打车怎么注册车主哈啰顺风车怎么绑定支付宝?介绍 excel怎么设置前一类对应后一类excel表格一列怎么查看所有类型? 钉钉wifi打卡如何添加wifi钉钉如何设置图片打卡?介绍 qq分辨率怎么设置qq开启dpi适配方法QQ适配DPI怎么设置? 有哪些u盘数据恢复软件是免费的哪个软件对恢复U盘数据比较好?介绍 今日头条怎么删除切换的城市微信的其他缓存如何清理?介绍 快手如何关闭好友点赞通知首页快手一键取消赞?介绍 手机号码被标记快递怎么取消 win7exe文件怎么不显示程序图标win7电脑图标隐藏怎么找出来? 如何将照片换成手机桌面oppo真我15怎么添加照片放到桌面? 小米手机无缘无故出现耳机标识小米手机总显示耳机模式? 怎么把图片转换成pdf格式 为什么申请的汽车优惠券还在审核河北省购车优惠券怎么领取? word如何把一整页复制过来word如何同时复制一页图文?介绍 c语言如何修改常量c是正确的字符常量吗?

微信公众号