好心人来帮我看看这个快速排序
- C/C++ code
#include <iostream>using namespace std;//************************//**找基准数//************************template <class T>size_t Pivos(T array[], size_t left, size_t right){ T pivos = array[left]; while (left < right) { while (left < right && array[right] >= pivos) { right--; } if (left < right) { array[left++] = array[right]; } while (left < right && array[left] <= pivos) { left++; } if (left < right) { array[right--] = array[left]; } } array[left] = pivos; return left;}//************************//**快速排序//************************template <class T>void QuickSort(T array, size_t left, size_t right){ size_t pivos; if (left < right) { pivos = Pivos(array, left, right); QuickSort(array, left, pivos - 1); QuickSort(array, pivos + 1, right); }}typedef int T;int main(){ T array[] = {5,4,3,2,1}; QuickSort(array, 0, 4); for (size_t ix = 0; ix <= 4; ++ix) { cout << array[ix] << " "; } cout << endl; return 0;}感觉没有错误啊。。
[解决办法]
- C/C++ code
template <class T>void QuickSort(T array, size_t left, size_t right){ size_t pivos; if (left < right) { pivos = Pivos(array, left, right); if(left>=0 && pivos>left) QuickSort(array, left, pivos - 1); if(pivos>=0 && right>pivos) QuickSort(array, pivos + 1, right); }}