双核CPU上的快速排序效率

本文通过对比单任务快速排序与多任务并行快速排序在双核CPU上的性能,发现并行版在排一百万个随机整数时耗时234ms,比单任务版的406ms显著提升,效率提高约86.7%。通过四线程分割和归并策略,展示了多核环境下算法的潜力。
摘要由CSDN通过智能技术生成
 
双核 CPU 上的快速排序效率
 
为了试验一下多核CPU上排序算法的效率,得比较单任务情况下和多任务并行排序算法的差距,因此选用快速排序算法来进行比较。
测试环境:双核CPU 2.66GHZ
                    单核CPU 2.4GHZ
           
以下是一个快速排序算法的源代码:
UINT Split ( void ** ppData , UINT uStart , UINT uEnd ,
                     COMPAREFUNC CompareFunc )
{
    void * pSelData ;
     UINT uLow ;
    UINT uHigh ;
 
    uLow = uStart ;
    uHigh = uEnd ;
 
    pSelData = ppData [ uLow ];
    while ( uLow < uHigh )
    {
        while ( (* CompareFunc )( ppData [ uHigh ], pSelData ) > 0
            && uLow != uHigh )
        {
            -- uHigh ;
        }
        if ( uHigh != uLow )
        {
            ppData [ uLow ] = ppData [ uHigh ];
            ++ uLow ;
        }
 
        while ( (* CompareFunc )( ppData [ uLow ], pSelData ) < 0
            && uLow != uHigh )
        {
             ++ uLow ;
        }
         if ( uLow != uHigh )
        {
            ppData [ uHigh ] = ppData [ uLow ];
            -- uHigh ;
        }
    }
    ppData [ uLow ] = pSelData ;
 
    return uLow ;
}
 
 
void QuickSort ( void ** ppData , UINT uStart , UINT uEnd ,
                        COMPAREFUNC CompareFunc )
{
    UINT uMid = Split ( ppData , uStart , uEnd , CompareFunc );
    if ( uMid > uStart )
    {
        QuickSort ( ppData , uStart , uMid - 1, CompareFunc );
    }
 
    if</
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值