首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

什么是快速排序算法?详述快速排序算法的原理?用C语言实现快速排序算法。内附完整代码。

大家好,我是贤弟!

一、什么是快速排序?

快速排序(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;}

输出结果:

  • 发表于:
  • 原文链接https://page.om.qq.com/page/O-QG4Fy8rTmgcrX_cpzu1ukA0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券