快速排序完整示例

xiaoxiao2026-08-23  13

#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;} 相关资源:一个快速排序的小例子
转载请注明原文地址: https://www.6miu.com/read-5051694.html

最新回复(0)