快速排序之 c++实现 --使用迭代器

使用迭代器和模板可以实现程序的通用性,容器和迭代器的设计成功的将算法和数据结构进行分离。

下面是使用迭代器实现的快速排序的核心代码。

 

template <class ForwardIt>
void quicksort(ForwardIt first, ForwardIt last)
{
    if (first == last)  return;
    auto pivot = *std::next(first, std::distance(first, last) / 2);
    
    ForwardIt middle1 = std::partition(first, last, [pivot](const auto& em) { return em < pivot; });
    ForwardIt middle2 = std::partition(middle1, last, [pivot](const auto& em) { return !(pivot < em); });

    cout << "data is: " << endl;
    for_each(first, middle1, [](auto n) {cout << n << " "; }); cout << endl;
    for_each(middle2, last, [](auto n) {cout << n << " "; }); cout << endl;
    
    quicksort(first, middle1);
    quicksort(middle2, last);
    
    return; 
}

 

转载于:https://www.cnblogs.com/cofludy/p/10685421.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值