算法导论-快速排序
解题思路
快速排序是排序算法中时间复杂度较好的一种解法,它每一轮从待排序的数组中取一个数,通过比较移动各个数字,小于该数的移到左边,大于的移到右边,然后再递归地在左右两边进行此算法,直到带排序数组长度变为1。算法导论中快速排序的分治解法相当简介,在此我用C++来加以记录。
代码
int Partition(int a[], int f, int l) { int i = f - 1; for (int j = f; j < l; j++) { if (a[j] <= a[l]) { i++; swap(a[i], a[j]); } } i++; swap(a[i], a[l]); return i; } void QuickSort(int a[], int f, int l) { if (l > f) { int p = Partition(a, f, l); QuickSort(a, f, p - 1); QuickSort(a, p + 1, l); } }