首页 > 代码库 > 快速排序算法的基本实现

快速排序算法的基本实现

/* ******* QSort.cpp ******************* 快速排序实现 ********** */#include "stdafx.h"#include <list>using namespace std;template <typename T>void Sort(T* a, int n){    if (n <= 1)    {        return;    }    if (n == 2)    {        T& left = a[0];        T& right = a[1];        if (left > right)        {            swap(left, right);        }        return;    }    swap(*a, a[n>>1]);    T* L = a + 1;    T* R = a + n - 1;    T v = a[0];    while(L < R)    {        while(L < R && *L < v)L++;        while(R > a && *R >= v)R--;        if (L < R)        {            swap(*L, *R);        }    }    swap(*a, *R);    Sort(a, R - a);    Sort(R + 1, n - 1 - (R - a));}int _tmain(int argc, _TCHAR* argv[]){    int a[10];    for (int i = 0; i < 10; i++)    {        a[i] = 10 - i;    }    Sort<int>(a, 10);    return 0;}

 

快速排序算法的基本实现