网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
03月03日
漏签
0
天
c语言吧
关注:
798,754
贴子:
4,349,560
看贴
图片
吧主推荐
视频
游戏
1
2
下一页
尾页
35
回复贴,共
2
页
,跳到
页
确定
<<返回c语言吧
>0< 加载中...
快速排序超时
只看楼主
收藏
回复
玥影枫桥缘
低能力者
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
新手写了一个快排,但是acwing输入十万个相同数的时候会超时,怎么样规避这个超时呢
玥影枫桥缘
低能力者
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
新手轻喷
青岛翠满涨珠宝
哪里有鉴定机构,权威鉴定翡翠手镯值多少钱,在线鉴定翡翠手镯值多少钱-好的翡翠手镯,裂绺5要素判断值多少钱,3分钟教您辨别翡翠价值,免费翡翠鉴定中心,加微信了解更多详情
2025-03-03 05:17
广告
立即查看
玥影枫桥缘
低能力者
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
顶
c是世界最好的语言
大能力者
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
是不是可以先检查是不是已经有序了。虽然感觉有点可能会导致平常情况变慢
。
GTA小鸡
吧主
14
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
先把题目发出来
玥影枫桥缘
低能力者
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
c是世界最好的语言
大能力者
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
你知道为什么你那么慢吗,因为你相同的数列表经过onesort分割后的哨兵值就是第一个元素,也就是你10万个元素就要做10万次onesort。
c是世界最好的语言
大能力者
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
为什么quicksort快就是因为他大部分时候能把数组分割成两部分,然后时间复杂度为可以NlogN。你的onesort是首元素哨兵法,那么对于有序数组只能分割成(0,0)和(1,N)两个数组,最坏情况是logN2。要么你换一种onesort方法比如选取随机值哨兵,要么在排序前先检测一下是否已经数组已经排好。
GTA小鸡
吧主
14
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
尝试优化一下
1.数组改成全局变量,避免分配
2.在onesort函数后面加__attribute__((always_inline))
3.pivot选择median of three
c是世界最好的语言
大能力者
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
最笨的方法是在quicksort函数里加一个检查是否数组有序的判断
microroom
帕秋莉糕
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
1、解决区间所有数都相同的情况
每次onesort找出区间的最小最大值,如果它们相等返回-1表示不需要排序了
2、解决区间已经有序(升或降)
left、mid、right三数取中做枢纽
遂逸
帕秋莉糕
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
快速排序在最坏情况下的时间复杂度是(n^2). 当序列已经是有序时,就是这种情况。
若大部分数据有序时,情况也一样。
遂逸
帕秋莉糕
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
按照前面吧友提的建议,修改程序如下。这个应该能通过
知识浅薄
路人
2
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
三数取中,子函数取最左边最右边和中间的数返回中间数,然后用中间数做key
三路划分,将跟key相等的数放到中间。begin指向最左边,end指向最右边,cur从begin+1位置开始遍历,cur比end大时结束。当cur遇小时,跟begin交换,begin++,cur++。遇大时跟end交换,end++。再递归左区间letf,begin-1,右区间end+1,right
浮光若梦
异能力者
6
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
哨兵的问题,最坏情况会退化到O(n^2)
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示