C语言实现快速排序
2023-12-13 13:28:08
完整代码:
#include<stdio.h>
//用第一个元素将待排序序列划分成左右两个部分,返回排序后low的位置,即枢轴的位置
int partition(int arr[],int low,int high){
//让待排序序列中的第一个元素成为基准
int pivot=arr[low];
//low=high代表一次划分完成
while (low<high)
{
//从待排序序列的右边往左找
//找到一个比基准小的元素,循环就结束
while (low<high&&pivot<=arr[high])
{
high--;
}
//让比基准小的元素移动到左边
arr[low]=arr[high];
//从待排序序列的左边往右找
//找到一个比基准大的元素,循环就结束
while (low<high&&pivot>=arr[low])
{
low++;
}
//让比基准大的元素移动到右边
arr[high]=arr[low];
}
//让基准元素成为枢轴,此时,枢轴左边都是比它小的元素,枢轴右边都是比它大的元素
arr[low]=pivot;
//返回枢轴
return low;
}
//快速排序
//在区间中挑选第一个元素作基准,将小于基准的元素放在基准之前,大于基准的元素放在基准之后,再分别对小数区与大数区进行排序
//对于这两个区间就可以采用递归调用方式再次进行排序
void quick_sort(int arr[],int low,int high){
//low=high代表一趟排序完成
if (low<high)
{
//pivot作为划分左右两个区间的枢轴,即左子表 枢轴 右子表
int pivot=partition(arr,low,high);
//划分左子表
quick_sort(arr,low,pivot-1);
//划分右子表
quick_sort(arr,pivot+1,high);
}
}
int main(){
int arr[10]={3,2,1,7,5,9,8,4,10,6};
quick_sort(arr,0,10);
for (int i = 0; i < 10; i++)
{
printf("%d ",arr[i]);
}
return 0;
}
运行截图:
文章来源:https://blog.csdn.net/m0_71709382/article/details/134831612
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!