用多线程进行的序列快速排序
来源:互联网 发布:淘宝品牌调性分怎么查 编辑:程序博客网 时间:2024/06/06 11:00
本质上是选择最前面的一个数作为分割线,以此为分割。
在此基础上进行迭代,终点关注下使用lambda表达式 [&](T const& t) {return t < pivot; }作为分割点,
然后是使用了partion 和splice两个stl算法里面的代码
下面是原始的快速排序代码
template<typename T>
list<T> sequential_quick_sort(list<T> input)
{
if (input.empty())
{
return input;
}
list<T> result;
result.splice(result.begin(), input, input.begin());
T const& pivot = *result.begin();
auto divide_point = partition(input.begin(), input.end(), [&](T const& t) {return t < pivot; });
list<T> lower_part;
lower_part.splice(lower_part.end(), input, input.begin(), divide_point);
auto new_lower(sequential_quick_sort(move(lower_bound)));
auto new_higher(sequential_quick_sort(move(input)));
result.splice(result.end(), new_higher);
result.splice(result.begin(), new_lower);
return result;
}
template<typename T>
list<T> parallel_quick_sort(list<T> input)
{
if (input.empty())
{
return input;
}
list<T> result;
result.splice(result.begin(), input, input.begin());
T const& pivot = *result.begin();
auto divide_point = partition(input.begin(), input.end(), [&](T const& t) {return t < pivot; });
list<T> lower_part;
lower_part.splice(lower_part.end(), input, input.begin(), divide_point);
future<list<T>> new_lower(async(¶llel_quick_sort<T>, move(lower_part)));
auto new_higher(parallel_quick_sort(move(input)));
result.splice(result.end(), new_higher);
result.splice(result.begin(), new_lower.get());
return result;
}
- 用多线程进行的序列快速排序
- 用多线程判断快速排序和冒泡排序的速度
- 快速排序;用php实现sort进行字符串的排序
- 多线程排序+快速排序
- 快速排序的划分子序列思想:
- 快速排序的思想进行划分搜索。
- 调用库函数进行的qsort快速排序
- STL对已排序的序列进行排序和运算
- QT多线程快速排序
- 用Parallel_For进行并行快速排序
- 单链表进行快速排序
- 求序列第K大数的部分快速排序法
- STL在已排序的序列上进行集合运算
- 对给定的分数进行排序输出排名序列
- Arrays . sort 进行快速排序
- 使用qsort进行快速排序
- 利用中位数进行快速排序
- 对数组进行快速排序
- hdu_round3-1003.bx回文(manacher+dp)
- git常用命令
- jstl fmt标签笔记
- 华为机试——明明的随机数
- Linux常用命令清单
- 用多线程进行的序列快速排序
- 51 nod 1212 基础MST
- Service的两种启动方式
- 小船过河问题
- EdgeRouter ER-X 定时自动重启设置
- 谁“偷”走了SSD的容量?
- ”^“运算符重载实现幂指数运算
- 玲珑杯 1146(dp)
- java定时器和线程组