浏览 2279 次
锁定老帖子 主题:快速排序完整示例
精华帖 (0) :: 良好帖 (8) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-06-01
#include <iostream> using namespace std; template< typename T > void sort( T* a, int n){ if(n<=1) return;//递归退出条件,否则会出现段错误 if(n==2){ if(a[1]<*a) swap(a[1],*a); return; } swap(*a,a[n>>1]); T flag = a[0];//保存分界值 T* left = a+1; T* right = a+n-1; while( left<right ){ while( left<right && *left<flag ) ++left; while( *right>=flag && right>a ) --right; if( left<right ) swap( *left,*right); } swap(*a,*right); sort(a,right-a); sort(right+1,(n-1)-(right-a)); } int main() { int a[10240]; for(int i=0; i<10240; i++) a[i] = 10240-i; time_t t = time(NULL); sort(a,10240); cout << "time: " << time(NULL)-t << endl; for(int i=0; i<10; i++) cout << a[i] << ' '; cout << endl; } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |