當前位置:編程學習大全網 - 源碼下載 - C++中sort() 是如何實現的

C++中sort() 是如何實現的

// 插入排序實現:

void SortInsert::insertSort(vector<int>::iterator begin, vector<int>::iterator end)

{

for (vector<int>::iterator i = begin + 1; i < end; ++i)

{

for(vector<int>::iterator j = i; *j < *(j - 1); --j )

{

std::iter_swap((j - 1), j);

}

}

}

// 冒泡排序實現:

#include <algorithm>

template<typename Iterator>

void bubbleSort(Iterator first, Iterator last)

{

Iterator i, j;

for (i = first; i != last; i++)

for (j = first; j < i; j++)

if (*i < *j)

std::iter_swap(i, j); // or std::swap(*i, *j);

}

template<typename Iterator, class StrictWeakOrdering>

void bubbleSort(Iterator first, Iterator last, StrictWeakOrdering compare)

{

Iterator i, j;

for (i = first; i != last; i++)

for (j = first; j < i; j++)

if (compare(*i, *j))

std::iter_swap(i, j);

}

// 選擇

#include <algorithm> // for: std::iter_swap, std::min_element

template <typename Iterator>

void selection_sort(Iterator begin, Iterator end)

{

Iterator min;

while (begin != end)

{

min = std::min_element(begin, end);

std::iter_swap(begin, min);

++begin;

}

}

// 快速

#include <functional>

#include <algorithm>

#include <iterator>

template< typename BidirectionalIterator, typename Compare >

void quick_sort( BidirectionalIterator first, BidirectionalIterator last, Compare cmp ) {

if( first != last ) {

BidirectionalIterator left = first;

BidirectionalIterator right = last;

BidirectionalIterator pivot = left++;

while( left != right ) {

if( cmp( *left, *pivot ) ) {

++left;

} else {

while( (left != right) && cmp( *pivot, *right ) )

--right;

std::iter_swap( left, right );

}

}

--left;

std::iter_swap( pivot, left );

quick_sort( first, left, cmp );

quick_sort( right, last, cmp );

}

}

template< typename BidirectionalIterator >

inline void quick_sort( BidirectionalIterator first, BidirectionalIterator last ) {

quick_sort( first, last,

std::less_equal< typename std::iterator_traits< BidirectionalIterator >::value_type >()

);

}

===========算啦,妳還是去這裏(下面是鏈接)看看吧,***同學習哦!!

http://en.wikibooks.org/w/index.php?title=Special%3ASearch&redirs=1&search=sort&fulltext=Search&ns0=1&ns4=1&ns112=1

  • 上一篇:android framwork包含哪些代碼
  • 下一篇:如何和女生約會
  • copyright 2024編程學習大全網