首页 > 代码库 > C++快速排序算法
C++快速排序算法
From:
http://zh.wikipedia.org/wiki/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F
Code:
#include "stdafx.h"#include <functional>#include <algorithm>#include <iterator>#include <iostream>using namespace std;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( first, 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 >() );}int _tmain(int argc, _TCHAR* argv[]){ int a[] = {4,9,8,3,6,5,1,7}; int *s = a; int *e =a + sizeof(a)/sizeof(int) - 1; quick_sort(s,e); while(s <= e) cout<< *s++ <<" "; return 0;}
Result:
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。