快速排序代码备份
快速排序算法:
// QuickSort.cpp : 定义控制台应用程序的入口点。 // #include<iostream> using namespace std; template <typename T> void QSort(T* a, int n) { if (n <= 1) //记住是小于等于1 { return; } if (n == 2) { if (a[0] > a[1]) swap(a[0], a[1]); return; //记得有return } swap(*a, a[n>>1]); T v = *a; T* L = a + 1; T* R = a + n - 1; while( L < R) { while(*L < v && L < R) L++; //记得是小于,要等到> while(*R > v && R > a) R--; //记得是R-- if ( L < R) swap(*L, *R); } swap(a[0], *R); QSort(a, R - a); //记得是从a开始 QSort(R + 1, n - 1 - (R - a)); //记得个数的计算方法 总个数减去分界值减去左边的个数 } int main(int argc, char* argv[]) { int a[10]; for (int i = 0; i < 10; ++i) a[i] = 10 - i; QSort(a, 10); for (int i = 0; i < 10; ++i) cout << a[i] << "" ; cout << endl; return 0; }