文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>快速排序(C++模版技术实现)

快速排序(C++模版技术实现)

时间:2011-05-28  来源:单鱼游弋

下面代码仅供本人复习数据结构所用,实用性N低,各位飘过吧~~哈哈:>

//
// C++模版技术实现快速排序. 
// 

#include <cstdlib>
#include <cstring>
#include <iostream> 
#include <stdexcept>

//
// 两值交换. 
//
template <typename T>
inline void swap(T &x, T &y)
{
        T temp = x;
        x = y;
        y = temp;
}
 
//
// 快速排序函数模版. 
// 以首元素为基准(pivot)进行划分. 
//
template <typename T>
void quickSort(T *array, size_t first, size_t last)
{
        if (NULL == array) {
                throw std::invalid_argument("参数 array 不能为 NULL.");
        }
        
        if (first < last)
        {
                static size_t pivot, i, j;
                static T *pPivotValue;
                
                pivot = first, i = first + 1, j = last;
                pPivotValue = &array[pivot];
                
                while (i < j) 
                {
                        if (array[i] > *pPivotValue) {
                                swap(array[i], array[j--]);
                        } 
                        else {
                                i++;
                        }
                }
                if (*pPivotValue <= array[i]) {
                        --i;
                }
                swap(array[pivot], array[i]);
                
                quickSort(array, first, i);
                quickSort(array, j, last);
        }
}


//
// 测试.
//
int main(void)
{
        char szTest[] = "Quick sort algorithm test case !"; 
        int iarrTest[] = {23, 12, 2, 123, 72, 35, 49, 51, 83, 94, 65}; 
        const size_t INT_ARR_SIZE = sizeof(iarrTest) / sizeof(iarrTest[0]);

        quickSort(szTest, 0, strlen(szTest) - 1);
        quickSort(iarrTest, 0, INT_ARR_SIZE - 1);
        
        std::cout << szTest << std::endl;

        for (size_t i = 0; i < INT_ARR_SIZE; ++i)
        {
                std::cout << iarrTest[i] << " "; 
        }
        std::cout << std::endl;

        return EXIT_SUCCESS; 
}
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载