/* ******* 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; }
时间: 2024-10-01 02:20:42