关注
按照二楼的说法,我简单总结了一下(以升序为例) 1、直接插入排序,因为该排序算法是先让左边有序,然后从右边依次选择数据放到左边,并使左边有序,那么最好的情况就是原序列本身就是升序,每次只需从右边往左边添加数据,不需要对左边已经排好序的数据进行排序,那么一共只需添加n次;最坏的情况是序列本身是降序的,那么每次从右边往左边添加数据的时候都要与左边的数据进行对比移动,第n次需要移动(n-1)次,则一共需要移动1,+2+3+....+(n-1)=n(n-1)/2次,故时间复杂度范围为O(n)~O(n^2)。平均复杂度为O(n^2)。 2.希尔排序,希尔排序是对直接插入排序算法的改进,即选取增量序列做一次直接插入排序,然后缩小增量,直到最后一个增量为1。我上网查了一下,感觉希尔排序的复杂度比较麻烦,没什么参考资料,这里就直接给出答案,O(n)~O(n^2),我就把它当做直接插入排序记了。ps:好像有人说最好的情况是O(n^1.3),我看到的是平均复杂度为O(n^2),有没有高人出来指点一下! 3.选择排序,选择排序每次选择最大的数据放在数组的后面。每趟都需要对数组进行遍历找出最大的放在后面 ,因此最好的情况一共需要访问1+2+3+…+n-1= n(n-1)/2次,故时间复杂对为O(n^2)。平均时间复杂度为O(n^2)。 4.堆排序,比较好记,堆排序要先构造初始堆,时间复杂度为O(n),然后排序重建堆的时间复杂度为O(nlog2n),所以复杂度为O(n)+ O(nlog2n)= O(nlog2n),原谅楼主非科班出身,对堆啊,二叉树啊的复杂度理解没那么深刻,脑阔疼也不想去推,所以这里就直接记,堆排序的好坏情况都是一样的,时间复杂度为O(nlog2n)。平均时间复杂度O(nlog2n)。 5.冒泡排序,冒泡排序是每次从左边选择一个数据一次与右边数据比较,如果比右边大就交换位置,继续往后比较,那么最好的情况就是序列本身就是升序的,一趟下来比较了n-1次不需要交换结束排序,时间复杂度为O(n);最坏的情况序列本身降序,那么第一次就需要交换n-1次,第二次排序需要交换n-2次,最后一共需要交换(n-1)+(n-2)+(n-3)+….+1= n(n-1)/2,所以时间复杂度为O(n^2)。故时间复杂度为O(n)~O(n^2)。平均复杂度为O(n^2)。 6.快速排序,参考二楼老哥的说法,快排的原理就是每次从当前数组中选出一个pivot元素,并依此元素遍历数组,将数组划分成两部分:小于pivot的元素和大于pivot的元素。然后在两个子数组中分别递归地进行这个***作。因为是2分,所以一共需要划分log2n次,每次遍历一遍数组,复杂度nlog2n。最坏的情况是每次选出的pivot都是当前数组中最大或最小的元素,此时只能划分出一个子数组(另一个没有元素)。那么一共需要划分n次,每次遍历一遍,时间复杂度为O(n^2)。故时间复杂度为O(nlog2n)~ O(n^2)。平均负载度为O(nlog2n)。 7.归并排序,由于是从序列中间对半分,分治排序,因此不管情况好还都要进行划分log2n次,每次遍历一遍数组,时间复杂度O(nlog2n)。平均复杂度为O(nlog2n)。 8.基数排序,哈哈哈,表示我没看基数排序,后面再补吧。或者谁补充一下 空间复杂度的话,前五个都是O(1),后面快速排序的空间复杂度为O(nlog2n),归并排序是O(n),不想推就记一下吧,比好好记。 有可能有问题,欢迎指正。谢谢! 希望大家面试被问到的都是自己会的!我还是一只0offer狗,非科班找IT岗真难。
查看原帖
10 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 上班到公司第一件事做什么? #
111483次浏览 764人参与
# 工作两年想退休了 #
205608次浏览 1822人参与
# 七夕节你打算怎么过? #
69322次浏览 800人参与
# 运营面经 #
146312次浏览 1323人参与
# 参加过提前批的机械人,你们还参加秋招么 #
103979次浏览 1641人参与
# 如果公司降薪,你会跳槽吗? #
112650次浏览 729人参与
# 蚂蚁求职进展汇总 #
138978次浏览 1224人参与
# 运营商笔面经互助 #
189548次浏览 1795人参与
# 找工作能把i人逼成什么样 #
16850次浏览 192人参与
# 四大天坑是哪四家? #
91691次浏览 231人参与
# 网易求职进展汇总 #
169595次浏览 1414人参与
# 大厂面试初体验 #
84106次浏览 385人参与
# 什么样的公司千万别去 #
28608次浏览 151人参与
# 业务面应该做哪些准备 #
79504次浏览 814人参与
# 你今年做了几份实习? #
11441次浏览 167人参与
# 通信/硬件公司求职体验 #
178848次浏览 1025人参与
# 大学最后一个寒假,我想…… #
72723次浏览 730人参与
# 金三银四,你有感觉到吗 #
663559次浏览 6032人参与
# 大家每天通勤多久? #
64814次浏览 416人参与
# 一起聊华为 #
169446次浏览 826人参与
