大家好,我是贤弟!
一、什么是快速排序?
快速排序(Quick Sort)是一种分治法的排序算法,由C.A.R. Hoare于1960年提出。
快速排序的基本思想是:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,然后对这两部分记录分别进行快速排序,最终完成整个序列的排序。
二、快速排序的原理
快速排序的原理是,先从数列中取出一个数作为基准数(通常选取第一个数),然后将数列中所有比基准数小的数放在它左边,所有比基准数大的数放在它右边,这样就将数列分成了两个部分。接着,对这两个部分进行快速排序,不断递归执行上述步骤,直到所有数都有序排列为止。
三、代码示例
C语言实现快速排序的代码如下:
#include
int Partition(int arr[], int left, int right) { int pivot = arr[left]; // 将第一个元素作为基准数 while (left < right) { while (left < right && arr[right] >= pivot) right--; // 从右往左找到第一个小于基准数的元素 arr[left] = arr[right]; // 将该元素移动到基准数左边 while (left < right && arr[left] arr[right] = arr[left]; // 将该元素移动到基准数右边 } arr[left] = pivot; // 将基准数放回正确的位置 return left;}
void quickSort(int arr[], int left, int right) { if (left >= right) return; // 只剩下一个元素或没有元素,退出递归 int index = Partition(arr, left, right); // 分割数组 quickSort(arr, left, index - 1); // 对左侧子数组进行排序 quickSort(arr, index + 1, right); // 对右侧子数组进行排序}
int main() { int arr[] = {6, 5, 3, 1, 8, 7, 2, 4}; int n = sizeof(arr) / sizeof(int);
quickSort(arr, 0, n - 1);
for (int i = 0; i < n; i++) { printf("%d ", arr[i]); }
return 0;}
输出结果:
领取专属 10元无门槛券
私享最新 技术干货