C++list数组中百万级数据的排序问题在一个list数组中,有百万级的数据量甚至更多,怎么在稳定的情况下提高排
C++list数组中百万级数据的排序问题
在一个list数组中,有百万级的数据量甚至更多,怎么在稳定的情况下提高排序的效率?用哪种排序方法比较好?
[解决办法]
只有特殊情况可以优化,普适的是不会优于O(nlogn)的。
[解决办法]
mapreduce做归并排序。
[解决办法]
[解决办法] std::sort 快速实现的。直接用就行了
[解决办法]Intel IPP (Intel® Integrated Performance Primitives )
SortAscend, SortDescend
Sorts all elements of a vector.
Syntax
IppStatus ippsSortAscend_8u_I(Ipp8u* pSrcDst, int len);
...........
IppStatus ippsSortDescend_64f_I(Ipp64f* pSrcDst, int len);
..................
SortRadixAscend, SortRadixDescend
Sorts all elements of a vector using radix sorting algorithm.
Syntax
IppStatus ippsSortRadixAscend_8u_I(Ipp8u* pSrcDst, Ipp8u* pTmp, Ipp32s len);
....
IppStatus ippsSortRadixDescend_64f_I(Ipp64f* pSrcDst, Ipp64f* pTmp, Ipp32s len);
intel mkl (Intel® Math Kernel Library)
之 LAPACK
Sorts numbers in increasing or decreasing order.(Quick Sort)
Syntax
call slasrt( id, n, d, info )
[解决办法]用list自带的sort排序快多了,list里面是链表,交换地址比交换数据快得多。sort的话还有赋值
[解决办法]