免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: sublx
打印 上一主题 下一主题

[函数] 请教大家一个关于快速排序的问题。 [复制链接]

论坛徽章:
1
2015年亚洲杯之巴林
日期:2015-02-05 20:34:47
11 [报告]
发表于 2012-12-10 21:47 |只看该作者
回复 9# crazyhadoop


    你到你机器上运行下,看看是不是大概的结果。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
12 [报告]
发表于 2012-12-10 22:00 |只看该作者
回复 1# sublx


    刚qsort 一个整型 数组, 除了练习下, 实际应用中有意义吗?
    在什么情况下,是对 整数组 排序, 没有其它任何相关信息?在具体的应用环境下应该是,以整型数 为关键字的信息。

论坛徽章:
1
2015年亚洲杯之巴林
日期:2015-02-05 20:34:47
13 [报告]
发表于 2012-12-10 22:04 |只看该作者
回复 12# goldenfort

我就是吃饱了没事干,脑子一拍写的,但是写过之后,遇到这样的疑问,所以想咨询一下大家嘛?


   

论坛徽章:
0
14 [报告]
发表于 2012-12-10 22:20 |只看该作者
int partition(int *array, int low, int high)
{
    int prov = array[low];
    while(low < high)
    {
        while(low < high && array[high] >= prov) high--;
        array[low] = array[high];//????
        while(low < high && array[low] <= prov) low++;
        array[high] = array[low];//????
    }
    array[low] = prov;
    return low;
}
问号的地方为什么不需要swap array[low] and  array[high]?

论坛徽章:
1
2015年亚洲杯之巴林
日期:2015-02-05 20:34:47
15 [报告]
发表于 2012-12-10 22:32 |只看该作者
回复 14# hzy2hzy

为什么需要?不过我记得是有一个swap的写法的,不过我这样写不需要。
   

论坛徽章:
0
16 [报告]
发表于 2012-12-10 23:01 |只看该作者
回复 10# sublx

debian wheezy, x86-64, g++ 4.7.2, -O2
inpput size:1000000
input times:10
t1 = 0.11seconds
t2 = 0.16seconds
same
t1 = 0.11seconds
t2 = 0.16seconds
same
t1 = 0.11seconds
t2 = 0.15seconds
same
t1 = 0.12seconds
t2 = 0.16seconds
same
t1 = 0.12seconds
t2 = 0.15seconds
same
t1 = 0.11seconds
t2 = 0.16seconds
same
t1 = 0.11seconds
t2 = 0.15seconds
same
t1 = 0.11seconds
t2 = 0.15seconds
same
t1 = 0.11seconds
t2 = 0.15seconds
same


确实会慢,但没有你的结果那么离谱。

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
17 [报告]
发表于 2012-12-10 23:03 |只看该作者
一句话:瞎JB抖擞。

论坛徽章:
1
2015年亚洲杯之巴林
日期:2015-02-05 20:34:47
18 [报告]
发表于 2012-12-10 23:05 |只看该作者
回复 16# 变异老鼠

怎么我这里会慢这么多?难道是我那个compare函数写得太挫了?我看下。(PS:你是用我贴的代码吗?)
  1. int compare(const void *v1, const void *v2)
  2. {
  3.         int *p = (int *)v1;
  4.         int *q = (int *)v2;

  5.         if (*p < *q) return -1;
  6.         else if (*p > *q) return 1;
  7.         else return 0;
  8. }
复制代码

论坛徽章:
0
19 [报告]
发表于 2012-12-10 23:13 |只看该作者
回复 18# sublx

换了你的 compare,没什么区别。

我来猜猜……用的是 VS 的 Debug 库?

论坛徽章:
1
2015年亚洲杯之巴林
日期:2015-02-05 20:34:47
20 [报告]
发表于 2012-12-10 23:14 |只看该作者
回复 19# 变异老鼠


是的。

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP